[Return] [Bottom]

Posting mode: Reply

Emotes
Kaomoji
Emoji
BBCode
(for deletion)
  • Allowed file types are: gif, jpg, jpeg, png, bmp, webp, swf, webm, mp4
  • Maximum file size allowed is 50000 KB.
  • Images greater than 200 * 200 pixels will be thumbnailed.
  • 14 unique users in the last 10 minutes (including lurkers)




We will have Bunkasai on 19-20 September [Info]

Want your banner here? Click here to submit yours!

come down to https://play.heyuri.lol and generate your own game. this is my last minute bunkasai submission. while it took me like 1 day to throw this site together.
it is actually part of a game engine i have been working on for months now.
the page it self is anonymized to look liek heyori! there is a lot of changed features to stay anonymized.
there is no image generation and no audio generation connected to my claude. but you can prob still have it pull some audio libs and programmatically gen it or run a really light image gen lib or imagemagic or even links to images.
your imagination and the claude TOS is the limmit!
either way. come and join and test out my engine.
i am totally not using this as a alpha test for my engine or anything.

oh and if things are not up rn. its because i am going to bed and i told AI to just get the rest of this fixed while i sleep. go an try to win big on prompts!
>>
prompt submitted
>>
:cry:
>>
It's the jankiest shit I ever "played" :xd:
>>
the page isnt loading for me anymore :unsure:
>>
OP may be a good coder but definitely not a good debugger.
>>
>>194318
i am good debugger! ヽ(`Д´)ノ
what browser and gpu do you have. i never hit that error before
>>
>>194337
I'm not have any GPU, onboard, Intel q43-q45 chip. Also my browser is Firefox
>>
>>194338
thank u
>>
>>194338
so sokol version(the multi media lib) i am using does not support webgl1, and firefox would need you to force enable webgl to make it use cpu?
or go to chromium where it supports webgl2 on cpu. i am gonna definitely try and backport webgl1 in the mean time. thank you again for uncovering this
>>
>>194342
Chrome or Chromium; they extremely slow and lagged, unusable level.

Thanks!

Actually my computer always gives me trouble because of OpenGL, WebGL, and other like things.
>>
>>194345
chrome and chromium are the same. both developed by google. its that chromium is the open sourced version and chrome is googled's proprietary fork.
>>
well since my bunkasai was kinda a fail/test product. I might as well go over what this game engine is and things i have discovered along the way!

so i have been working on this every day since may 10th with maybe a day or 2 knocked out bc sick/drunk missing commits for those days. i have ultimately started working feb 21st.

the original problem started 4 moths prior to building this engine. the issues was about roblox and luau. in luau there is not proper way to do oop and there was no real framework to create network driven objects and proper serialization to squash and store objects directly into data bases. so the 4 months prior i was on and off developing a frame work in luau to build exactly that.
it was hacky but when i was getting close to completion of it, roblox pushed ID verification hard, so hard that to upload a game to there platform you had to have an ID verified account and pay money, witch just made it totally useless. i went looking for alternatives i can develop on and none had the ability to make stand alone game and there platforms where really weak. the framework it self is engine agnostic witch plugging it into sockets or what every the underlying engine exposes.
the adventure into looking for alternatives put me into discord servers witch any sort of discussion or talk i had immediately got spammed with rule 8 and serious discussions deleted. witch sucked bc that was the only one developing a custom engine at the time, the rest are based off unity or godot or AI codded by some kid who knows nothing about computers.
after a while and seeing more news about shit, i went and started my own project bc i thought it couldn't be to hard to remake this.

so i started with figureing out libs i would want, and setup and structure of how things should be. i ended up finding roblox's API documentation is cc0 with mit code examples along with some test places also as cc0/mit there luau scripting fork was also open source.
i grabbed all of that loot, i picked D lang as my programing language and was intrested in sokol since i didn't really wanna have sdl2 and its legacy code base.
i first started out making a data driven API for luau matching roblox parity. i would define meta data like name, paramiter, description, wether it was server client, editor or native. and other little things like that.
i then started building out objects for each one of them structures (witch later i found out to be an issue) and i used that as engine internals i would passed around to the sound system physics and all.
the reason why the meta data API is important is because it defines one source of truth, everything will agree upon that. there will be little knock out flags for client server editor etc that will know its self and check agents the api (during copilation)
so each thing will know what it can and cant do with that
i didn't want to define every single luau to object layer, so the object files holding the api meta data meant there is one file to manage. and not 3 different file for this structure. as they would have been the bridge wiring, the object, and the object representation in luau.

this surprising worked really well that i was able to really early get scripts that worked in roblox to work in my engine. i had built a render witch would walk the whole data model, data model being a hierarchy of objects witch children and stuff. so u can properly parent thigns and sort them. (more issues later about all of this)
so every time i wanted to render i would walk the whole tree grabbing each part and sending it to the gpu its position size color and all.realy optimizations included walking the tree once, sending it all to the gpu, and then only sending stuff that changed witch gave me hooks to work with.

next was physics and man this was kinda a pain, jolt was kinda buggy but it worked after some tuneing, i was able to get it to do physics but it would destroy the cpu on all core max, that i had to turn down the hrz it did its cals or what ever a bunch.. and if it was to low, thigns would fall thu the floor and other weird buggy stuff. not much i can say other then i had many issues and lots of that was just fixing up physics world by tuning.

at this point every one of my tests where just luau scripts as a launch options. and that would generating the world and drawing it on screen. i started developing a editor around all of this and slowly converting everything to be driven by save files rather then launch flags. i got imgui from sokol to build the editor it self. (turns out roblox also uses imgui, i saw it in there latest engine showcase)
the editor must have its own VM and other custom bvinding just so that it can do fileIO and other things. it would run more powerful scripts that could do actual things on your system but idealy it shoudnt be posible to do stuff unless u got a plugin that does it. game scripts would be isolated into there game vm that has no fileio bindings and other things.
some of the editor stuff would include tools that can dip its hand into the data model and set positiongin and stuff. while the main thing it was, was to hold separate gizmos for positioning and scaling and other sorts of non game intractable.
the next work was getting multiple scripts working into the run time cycle (cycle being input, scripts, physics, rendering. repeat) i am not sure when i was doing it but i added GNS sockets to allow me to host games and i had to also fit networking into that cycle where i send changed data and where i send full copy of the data model on join. i forgot when i was working on it but i also was taking wren scripting engine and converting it to be more like my original framework, and defining a language i would like to write code in. the real idea i had for this custom langauge was so i could define my own API bindings that live on the server and client. and would be a shared at runtime and would live entirely in that vm. lot more on this later..

the next major thing was getting more plugins working and pulling games form github and converting them over. i was able to get UI plugins working, data base plugins working ( as idk when again but i got https request and also some nosql db for scriping)
not much anything there i just use curl and other things and it would be async non blocking, and has a callback hook for when it reenters the vm.

so forgot some of the details, oh well. but yeah i switch from jolt to box3d as a physic engine since box3d is developed by valve and recently came out and it was AMAZING best physic engine ever it beats everything and not konwn at all. one of the most important features i later discovered was deterministic physics. this has the power to make networking EXTREAMLY cheap to keep game phsyics in sync with out cheaters, since it has small hashes to check shit. and would allow the clients to predict and reconcile physics and can tell when some one is out of sync via majority hashes. gotta have some back stops on it but it was extremely preforment.
i then developed a way to define the contacts and have server client both have them and then a wren file would basicly implement the api and be given to server and client at runtime and could then create things into the data model and interacting with it would send it all to the wren VM for data acsses and all. making it quite nice to define custom objects like helth or enemy or coin or what ever u want, and can define custom properites and childen objects.

by this point i stopped compiling it for web browser and mac and windows, and just did mobile and linux VM.
one things about my set up i didnt mention it and it was done really really early was i had LOTS of unit tests. written in both luau and D lang to test and make sure functiosn still are expectied and the API astill works as expected and all of that so i know when something i changed cause a major break.
total as of right now is 6885 total tests ran. some may be in luau libs i use some may be other vendors i have but majority is engine counting for 4787.
forgot when but it was before i moved to box3d. sokol audio render is not 3d. or maybe i didnt look hard enough so i added the audio lib soloud. it is minimal and supports a hand full of things but also missing other audio effects.

>>

so by this point i basicly got most things working i can import a roblox game and run it... but it runs like shit. and i dont really like the stupid lego people. so i sepnd long time optimizing things and working out what i can do to make faster. it turns out i am going oever the whole data model a hand full of times for many things like audio physics and other trash. i was able to have it go down a bunch. i then had to make a algo for oclusion culling witch meh it was okkay but what helped more was combinging pars with same textures and touching and all into one bigger shape reducing verties witch sure it helps a little more but the main issue was still the cpu burning recalcs, so some more optimizations was making a algo that apll parts start as records a small struct that defines what it is, but when a scirpt calls upon it, it will be made into a object on the fly and be used when need and held and if not usedfor a while will be turned back into a records. this saved a lot of ram, and then i was able to turn that list of awoken objects into a sparse set that i would then feed into systems as deltas making things faster. many other little things
another thing i am really proud of was getting duplexing working as it was HARD, most game servers opporate in 1 world per application. but i felt that my engien was light enough that i could duplex stuff. and have less rame usage and only have awoken stuff be the custom things for each work. as some games that are 1 users each per game or a tycoon with max of 6 players could also get this since it is a small game on paper. but 10 procsses would be 10 engines with 80-90% of the same base game.

oh here is another thing u need 0 allocation games if posible bc a single malloc and other things can cause the whole world to freeze. and in case with duplexing it is hard in many things with one procsses starving the cpu of other games and many other smaller things.
i had to redesign many things to have one base and things and then fork it into sub procsses, i was getting AI to help me and it basicly was refusing to help and said it was not possible and i had to study nginx to help figure out how it duplexes and all of that. i eventually got it working how i want but still needs tuneing but basicly the main issue was the cpu not being shared evenly and is why u had to fork rather then duplex in one processes and to actauly see real benifits you have to memory map from the parent procsses the engien and other unchanging data. so the whole game file and all.

another thing i did not mention before and it was a major pain point was the "app" shell and ui before u get into a game. so like game browser and all. i want to have it be something easy to work with i tried many things. i tried flutter at first since it was cross compatable and can compile for the web but it was not made for engines at all. the flutter engine to game engine was just bad i could not swap them easily since they where 2 incompatable rendering engines or something idk.. and the other option was to have a viewport in flutter to my engine and u would have to have flutter running to view game engine and it was extreamly laggy and would get really bad fps. after a month i dropped it and went for my raw game engine as the game UI and was gonna do what roblox did (or i assume is doing?) witch is have the app be written in native guis and use roact (react but for luau) but that was aidz and i didnt have my engine where it was today for that. so after 3 diffrent revistions and ripping out of code. i went with a webkit witch allowes me to have html css js in my engine directly. its not as fat as electron and other shit. and gives me more control over resources and i was able to share the same rendering and could completely kill/disable web when i am not using it givein more preformace to my engine. it just is kinda fat at like 200mb or so? witch meh had to pay some sort of price for a dat a driven front end.
that is what things use today and will prob stay using. this also means i can build a website(witch i already have just not play.heyuri as i stripped all of it out for you guys to play with)
this finaly was in a good place.

may other quality of life things, my engine supports custom glsl scripts and many more rendering things. the actual GUI was a pain in the ass since i dont know shit abount rendering and ui kinda lagged everything.

one of the best preformce boost i descoverd was researching other engines. quake for networking. web browsers for ui (and also duplexing) and nginx for server duplexing.
many things.
i am curently in the workds of trying ot get rid of all objects in favor of just records. browsers have many cool tricks up there sleave to make the whole data model system fast.
wathcing runtime size drop like crazy and cpu useage drop liek crazy is really cool. this works on shit devices i got on test sites.

as for characters and player, i did say i ditched the roblox character. its quite hard to make a proepr character i want. so i literly stole pengya. i am gonna have it so characters are mesh masked models. think of it like tf2's outfits rather then hats. hats are additive. but mesh masks is where u fully replace the torsoa or legs with a whole new model that fits that slot. it would provide for a more cleaner look but harder to equip stuff since some things may block other slots dynamicly and it is just over all harder to do then aditive like roblox or basic hats

that is about it. many otherstuff not mentioned. ask quesions if u want

Want your banner here? Click here to submit yours!

[Top]

Delete post: []
First
[1]
Last