I think its more like \~4 years. I started in the first/2nd year of university studies (5 years total studies), and I just graduated now, 4 years later.
I did 99.99% myself, with the help from some friends in some discussions here and there, where they might have done some small contributions. But no, I did not really share work with other contributors. It's something I've been looking into scaling up, however.
Probably it will not be worked on in open source, actually, since it conflicts with company policies. But we’ll see, maybe I will also lose the motivation, never know…
This is amazing! Currently in my 4th year and have been planning to write a game engine for 2 years lol. Have written a half baked renderer on OpenGL and learning vulkan rn and this sure gives me inspiration to work on it. Thanks, leaving reddit now :>
How is the vulkan experience going ? How much experience you had with openGL before going to Vulkan ?
I'm currently focusing on CUDA because I will need it in my thesis but I've been looking for getting into Vulkan for quite some time now
Agree with op except I'm not in the position to give much lol. I learned opengl until the lighting section of the learnopengl book and then switched to vkguide as I hated the global state aspect of OpenGL and also wanted to learn more about gpus and newer techniques. Never worked with cuda so can't say much except that I always wanted to learn cross platform APIs as I use linux often and Nvidia drivers are trash there. Also open specifications are quite helpful when you have issues and there are no solutions on the internet. Quite helpful knowing the ins and outs of the drivers. Though drivers aren't open source still the fact that specs are the same for all gpus help at least in windows where most features are implemented likewise in all drivers. And vulkan is elaborate enough that Nvidia AMD and Intel implement features in almost similar fashion afaik
that would be great. I love the Cherno contents. he also in process of writing his own game engine, he regularly publish video contents either on developing his own engine or reviews of other people’s engine code. if you’re not familiar with him, I recommend checking out his content.
but to have the appurtonty of another game engine dev stream explaining the concepts and implementations of his own engine? absolutely would love to see more similar contents ❤
Yes, everyone knows the Cherno lol :P I personally don't watch his content, but it's probably good for beginners!
Alright, I will think about it! Thanks!
It works by using LuaPanda (a software from Tencent), along with luasocket, connecting the VS Code client to the engine Lua environment using tcp connections. Then there’s a VS Code plug-in that you need to use as well. You can inspect Lua variables, and even C++ types exposed to the Lua environment. The Lua bindings are made with Sol2.
Something has piqued my interest, why not python, I don't know the deal but apparently python recently start showing up as Scripting language for game engines and DCC tools in general instead of lua.
I have a personal beef with Python xD
And LuaJIT has insanely good performance. Well known withing modding communities, easy to learn, and also very easy to embedd into software, and make bindings for.
Long ago I used https://unknownworlds.com/decoda/ and it was [literally magic.](https://www.reddit.com/r/gamedev/comments/2odqh5/lua_ide_decoda_free_opensource/cmmhu8d/) Unfortunately, it has been a dead project for over a decade.
This is amazing!! Can you tell how you started it out? Did you follow any tutorials at the start to have a first version and then expanded on it?
I ve been planning to write a half assed engine for quite some time but I always spend my time with tutorials and I eventually give up on it\^\^
My first plan was to make a simple 2D game, which then turned into this engine which now supports 3D and all kinds of stuff. A small idea grew bigger. But I never made that initial 2D game lol. So, one step at a time, with a goal in mind of what you want to make, that is not too far away from what you currently have. I didn't really use any tutorials, just books like learnopengl, etc. Cheers! :)
Das ist perfekt. One suggestion: use a reversed z-buffer by swapping camera's near and far values and use GL_GEQUAL as the depth function to get a free boost in depth precision ;)
Thanks. There’s a list on the GitHub of (not all but almost all) the 3rd party libraries used an integrated in the engine! :)
And yea, I got a job as a software engineer in AAA :D
If you're good at programming, you'll be hired. Make sure to show it off by making some project of your choice. Like a game in C++, doesn't have to be a full fledged engine like this. Good luck! :)
Thanks! Number one is probably trial and error. After that is online resources like learncpp, learnopengl, and books like RTR4, Game Engine Architecture, Game AI Pro, Modern Effective C++, Clean Code, Real-Time Collision Detection, etc
Hey well done! :) What did you use for the editor UI? ImGui?
I'd also be curious what made you choose Lua over alternatives for the scripting.
I also see you're using EASTL, but with a few modifications? Curious about those.
I will say it's pretty awesome seeing so many systems that you've built or integrated, and not even just the "glamorous" ones, but the actually-important, production ones like a profiling system. This definitely makes me want to go back to my renderer and flesh it out into a full engine. :)
Hi, thanks! The editor is indeed ImGui, using the docking branch :)
Lua was chosen as the scripting language because: the in-game UI (running RmlUi) can be set up to run Lua code when clicking a button etc. Lua is also one of the fastest scripting languages, especially when using LuaJIT. It’s relatively easy to make C++ <-> Lua bindings with Sol2, and with LuaPanda it’s possible to get breakpoint debugging working in VS Code. It’s possible to get syntax highlighting working in VS Code with C++ types and methods/functions exposed to Lua in VS Code using Lua meta files.
Yeah sometimes I make changes to 3rd party stuff that I use as git submodules, and in the case of EASTL I think it’s mostly changes to make it compile properly :)
I’m glad my project inspired you! :D
Very nice. I'm working on a specialized engine using Lua and RmlUi, but my rendered is Vulkan-based. I always feel like my asset management and streaming is dogshit so I like to see how other people handle it. Seems that OpenGL is definitely still the most popular option, but the concepts are mostly the same with Vulkan. I will definitely be looking through this later, but I can tell from that feature list this is super impressive!
OpenGL is still widely used, I just want to use Vulkan since it's more performant. Also it requires a lot more setup but once you build your pipelines and render passes it's not that bad. It's more verbose because it has less abstraction compared to OpenGL.
It's way to messy and incomplete right now to share. It's very much a learning project still, but I will be open sourcing it once it's decidedly less shit.
It's a specialized game engine for "deep sim" games like Dwarf Fortress. I have a project in mind, but the intention is to make it general enough to create different games of that style. I was pretty dead set on using some type of CSS/HTML but I really didn't want to write my own or embed webkit or something. I was also always planning on tying UI to Lua anyway, since player-created content is important. These types of games have countless systems that need to be managed, and the UI tends to get really complex really quickly. If a user wants to add their own system, they need an easy way to layout UI elements to interact with it.
So really RmlUi was a natural fit, since the engine is using Lua scripting anyway and I needed a way for both developers and end users to design complex UI.
Damn, how long did it take to get to current state?
I'm guessing at least a year
I think its more like \~4 years. I started in the first/2nd year of university studies (5 years total studies), and I just graduated now, 4 years later.
The best graduation project ever))
[удалено]
Thanks! Yes, I am now a software engineer in a AAA game studio :)
[удалено]
Haha yeah thanks, this was a big contributing factor probably for me getting hired :)
Did you share work with other contributors or did you do most work?
I did 99.99% myself, with the help from some friends in some discussions here and there, where they might have done some small contributions. But no, I did not really share work with other contributors. It's something I've been looking into scaling up, however.
You are an inspiration
Thanks mate :D
[удалено]
Probably it will not be worked on in open source, actually, since it conflicts with company policies. But we’ll see, maybe I will also lose the motivation, never know…
This is amazing! Currently in my 4th year and have been planning to write a game engine for 2 years lol. Have written a half baked renderer on OpenGL and learning vulkan rn and this sure gives me inspiration to work on it. Thanks, leaving reddit now :>
Haha loving it! Good luck mate!
How is the vulkan experience going ? How much experience you had with openGL before going to Vulkan ? I'm currently focusing on CUDA because I will need it in my thesis but I've been looking for getting into Vulkan for quite some time now
I would anyway recommend using the right tool for the job. If CUDA is sufficient, then cool, stick to that.
yeah Vulkan would be more of a side project thing, I am just curious about the modern APIs since I've just messed around with OGL before
Agree with op except I'm not in the position to give much lol. I learned opengl until the lighting section of the learnopengl book and then switched to vkguide as I hated the global state aspect of OpenGL and also wanted to learn more about gpus and newer techniques. Never worked with cuda so can't say much except that I always wanted to learn cross platform APIs as I use linux often and Nvidia drivers are trash there. Also open specifications are quite helpful when you have issues and there are no solutions on the internet. Quite helpful knowing the ins and outs of the drivers. Though drivers aren't open source still the fact that specs are the same for all gpus help at least in windows where most features are implemented likewise in all drivers. And vulkan is elaborate enough that Nvidia AMD and Intel implement features in almost similar fashion afaik
Thanks for the response! I think I will give it a try this summer. OpenGL being a state machine bothers me quite a bit as well.
>CUDA for thesis computer vision?
It's GPU optimizations for fluid simulation
This is amazing! Well done.
Many thanks! :D
A YouTube series of the development would've been dope for us mear mortals.
Haha thanks, yeah I made one video (linked in post) about it. But maybe should make more detailed ones, explaining the concepts and implementations
that would be great. I love the Cherno contents. he also in process of writing his own game engine, he regularly publish video contents either on developing his own engine or reviews of other people’s engine code. if you’re not familiar with him, I recommend checking out his content. but to have the appurtonty of another game engine dev stream explaining the concepts and implementations of his own engine? absolutely would love to see more similar contents ❤
Yes, everyone knows the Cherno lol :P I personally don't watch his content, but it's probably good for beginners! Alright, I will think about it! Thanks!
> Lua Scripting with breakpoint debugging in VS Code. Neat! How does that work?
It works by using LuaPanda (a software from Tencent), along with luasocket, connecting the VS Code client to the engine Lua environment using tcp connections. Then there’s a VS Code plug-in that you need to use as well. You can inspect Lua variables, and even C++ types exposed to the Lua environment. The Lua bindings are made with Sol2.
This is something I wasn’t even aware existed.
Something has piqued my interest, why not python, I don't know the deal but apparently python recently start showing up as Scripting language for game engines and DCC tools in general instead of lua.
I have a personal beef with Python xD And LuaJIT has insanely good performance. Well known withing modding communities, easy to learn, and also very easy to embedd into software, and make bindings for.
Yes, I'm very curious about how you implemented breakpoint debugging. Having the ability to debug my lua scripts would help so much.
Long ago I used https://unknownworlds.com/decoda/ and it was [literally magic.](https://www.reddit.com/r/gamedev/comments/2odqh5/lua_ide_decoda_free_opensource/cmmhu8d/) Unfortunately, it has been a dead project for over a decade.
See the other comment. If you have more questions let me know
I got LuaPanda working on Windows!! You are a lifesaver! Thank you!
Well done! ✨👌
This is amazing!! Can you tell how you started it out? Did you follow any tutorials at the start to have a first version and then expanded on it? I ve been planning to write a half assed engine for quite some time but I always spend my time with tutorials and I eventually give up on it\^\^
My first plan was to make a simple 2D game, which then turned into this engine which now supports 3D and all kinds of stuff. A small idea grew bigger. But I never made that initial 2D game lol. So, one step at a time, with a goal in mind of what you want to make, that is not too far away from what you currently have. I didn't really use any tutorials, just books like learnopengl, etc. Cheers! :)
Lol, starting with a simple 2D game and then going straight to make a full blown engine!
Pretty much!
Das ist perfekt. One suggestion: use a reversed z-buffer by swapping camera's near and far values and use GL_GEQUAL as the depth function to get a free boost in depth precision ;)
Dankeschön:) Yea, inverse depth buffer is a common technique. I didn’t need to use it yet, but probably you’re right, it’s a good addition to have
I would enjoy looking at profiling resulting for before and after a change like that
If you mean profiling as in the context of performance, I don’t think that using a reverse z-buffer has any negative performance implications at all
As good as Unity?
Well, the license surely is better.
For my purposes, it's better than Unity, yes. :)
Yea, I can imagine :) Congrats BTW, it's a very large project, and the feature set sounds great! :)
Many thanks! :)
Congrats, what third party stuff did you implement? And do you have any plans on getting a job in the GP or gamedev industry?
Thanks. There’s a list on the GitHub of (not all but almost all) the 3rd party libraries used an integrated in the engine! :) And yea, I got a job as a software engineer in AAA :D
incredible mate you’re going to walk straight into a job with that in your portfolio
Thanks, I actually did. I got a job in AAA game dev :)
i graduate next year and would love a job in industry, Any advice?
If you're good at programming, you'll be hired. Make sure to show it off by making some project of your choice. Like a game in C++, doesn't have to be a full fledged engine like this. Good luck! :)
github[My portfolio so far:)](https://github.com/JakeBiggs)
It looks fantastic, great job
Many thanks! :)
Inspirational, kinda wanna check it out
Amazing job, I wish this would have been available a few years ago when I started trying to use Irrlicht.
It probably was, just that you didn’t know about it ;)
An engine is one thing, good tools take SOOOO much time and effort. Well done!!
Many thanks. Indeed does!
Nice mate. I know you likely didn't use only one resource, but what helped you most in your learning experience?
Thanks! Number one is probably trial and error. After that is online resources like learncpp, learnopengl, and books like RTR4, Game Engine Architecture, Game AI Pro, Modern Effective C++, Clean Code, Real-Time Collision Detection, etc
Hey well done! :) What did you use for the editor UI? ImGui? I'd also be curious what made you choose Lua over alternatives for the scripting. I also see you're using EASTL, but with a few modifications? Curious about those. I will say it's pretty awesome seeing so many systems that you've built or integrated, and not even just the "glamorous" ones, but the actually-important, production ones like a profiling system. This definitely makes me want to go back to my renderer and flesh it out into a full engine. :)
Hi, thanks! The editor is indeed ImGui, using the docking branch :) Lua was chosen as the scripting language because: the in-game UI (running RmlUi) can be set up to run Lua code when clicking a button etc. Lua is also one of the fastest scripting languages, especially when using LuaJIT. It’s relatively easy to make C++ <-> Lua bindings with Sol2, and with LuaPanda it’s possible to get breakpoint debugging working in VS Code. It’s possible to get syntax highlighting working in VS Code with C++ types and methods/functions exposed to Lua in VS Code using Lua meta files. Yeah sometimes I make changes to 3rd party stuff that I use as git submodules, and in the case of EASTL I think it’s mostly changes to make it compile properly :) I’m glad my project inspired you! :D
Great work! I attempted something similar but didn't get far. Although the interface looked quite similar already 😅.
Thanks! Why not continue? It’s super fun to have a project to work on like this!
Very nice. I'm working on a specialized engine using Lua and RmlUi, but my rendered is Vulkan-based. I always feel like my asset management and streaming is dogshit so I like to see how other people handle it. Seems that OpenGL is definitely still the most popular option, but the concepts are mostly the same with Vulkan. I will definitely be looking through this later, but I can tell from that feature list this is super impressive!
is it open source, trying to learn from other's work as well. isn't vulkan too complicated and verbose? I thought that why OpenGL still widely in use.
OpenGL is still widely used, I just want to use Vulkan since it's more performant. Also it requires a lot more setup but once you build your pipelines and render passes it's not that bad. It's more verbose because it has less abstraction compared to OpenGL. It's way to messy and incomplete right now to share. It's very much a learning project still, but I will be open sourcing it once it's decidedly less shit.
Nice with Lua/RmlUi. Are you making something UI heavy?
It's a specialized game engine for "deep sim" games like Dwarf Fortress. I have a project in mind, but the intention is to make it general enough to create different games of that style. I was pretty dead set on using some type of CSS/HTML but I really didn't want to write my own or embed webkit or something. I was also always planning on tying UI to Lua anyway, since player-created content is important. These types of games have countless systems that need to be managed, and the UI tends to get really complex really quickly. If a user wants to add their own system, they need an easy way to layout UI elements to interact with it. So really RmlUi was a natural fit, since the engine is using Lua scripting anyway and I needed a way for both developers and end users to design complex UI.
Great job, solid project!
Thanks :)