all
a
/
b
/
c
/
f
/
h
/
j
/
jp
/
l
/
o
/
q
/
s
/
sw
/
lounge
cgi
up
wiki
Heyuri!
Bulletin Boards
2D Cute
2D Ero
2D Lolikon
3D Girls
Anime/Manga
Flash
Girl Talk
日本語/Japan
Lounge
Oekaki
Off-Topic
Site Discussion
Strange World
Overboard
Heyuri★CGI
Heyuri★CGI
@PartyII
Battle Royale R
Chat
Chinsouki★
Dating
DevChat
Drama Club
Hakoniwa Islands PvE
Hakoniwa Islands PvP
Polls
Slime Breeder
Web Banana
Web Shiritori
Yumemiru Gambler
Kakiko Checker
Other
Anime Nominations
Banners
Cytube
Heyuri Calendar
Heyuri Wiki
MAL Club
Museum
Steam Group
Uploader
[
Settings
]
[
Home
] [
Contact
] [
Catalog
] [
Search
] [
Thread list
] [
Stats
] [
Reports
] [
Watcher
] [
PMs
] [
Admin
]
Off-Topic@Heyuri
it's the place to be!
[
Return
]
Report a post
Preview
gaemowner
SAGE!
2026/09/20
(Sun)
04:31:26
No.
194355
[
Report
]
+
▶
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.
Post number
No.
194355
Board
Off-Topic@Heyuri
Reason
Optional. Describe what's wrong with it.
Style: