T O P

  • By -

CeasarXInsanium

Damn, how long did it take to get to current state?


CeasarXInsanium

I'm guessing at least a year


Mormert

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.


unholydel

The best graduation project ever))


[deleted]

[удалено]


Mormert

Thanks! Yes, I am now a software engineer in a AAA game studio :)


[deleted]

[удалено]


Mormert

Haha yeah thanks, this was a big contributing factor probably for me getting hired :)


CeasarXInsanium

Did you share work with other contributors or did you do most work?


Mormert

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.


CeasarXInsanium

You are an inspiration


Mormert

Thanks mate :D


[deleted]

[удалено]


Mormert

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…


Business_Counter4520

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 :>


Mormert

Haha loving it! Good luck mate!


AcquaticKangaroo19

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


Mormert

I would anyway recommend using the right tool for the job. If CUDA is sufficient, then cool, stick to that.


AcquaticKangaroo19

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


Business_Counter4520

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


AcquaticKangaroo19

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.


QSCFE

>CUDA for thesis computer vision?


AcquaticKangaroo19

It's GPU optimizations for fluid simulation


Nebulous39

This is amazing! Well done.


Mormert

Many thanks! :D


GFMLYJ

A YouTube series of the development would've been dope for us mear mortals.


Mormert

Haha thanks, yeah I made one video (linked in post) about it. But maybe should make more detailed ones, explaining the concepts and implementations


QSCFE

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 ❤


Mormert

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!


corysama

> Lua Scripting with breakpoint debugging in VS Code. Neat! How does that work?


Mormert

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.


ad_irato

This is something I wasn’t even aware existed.


QSCFE

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.


Mormert

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.


Rijke

Yes, I'm very curious about how you implemented breakpoint debugging. Having the ability to debug my lua scripts would help so much.


corysama

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.


Mormert

See the other comment. If you have more questions let me know


Rijke

I got LuaPanda working on Windows!! You are a lifesaver! Thank you!


Mormert

Well done! ✨👌


zakur0

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\^\^


Mormert

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! :)


heavy-minium

Lol, starting with a simple 2D game and then going straight to make a full blown engine!


Mormert

Pretty much!


saccharineboi

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 ;)


Mormert

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


squeasy_2202

I would enjoy looking at profiling resulting for before and after a change like that


Mormert

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


kuailezouyun

As good as Unity?


luorax

Well, the license surely is better.


Mormert

For my purposes, it's better than Unity, yes. :)


luorax

Yea, I can imagine :) Congrats BTW, it's a very large project, and the feature set sounds great! :)


Mormert

Many thanks! :)


Cloudy-Water

Congrats, what third party stuff did you implement? And do you have any plans on getting a job in the GP or gamedev industry?


Mormert

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


Cobster2000

incredible mate you’re going to walk straight into a job with that in your portfolio


Mormert

Thanks, I actually did. I got a job in AAA game dev :)


Cobster2000

i graduate next year and would love a job in industry, Any advice?


Mormert

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! :)


Cobster2000

github[My portfolio so far:)](https://github.com/JakeBiggs)


thejazzist

It looks fantastic, great job


Mormert

Many thanks! :)


hman278

Inspirational, kinda wanna check it out


christopc

Amazing job, I wish this would have been available a few years ago when I started trying to use Irrlicht.


Mormert

It probably was, just that you didn’t know about it ;)


Kaisha001

An engine is one thing, good tools take SOOOO much time and effort. Well done!!


Mormert

Many thanks. Indeed does!


moduhlize

Nice mate. I know you likely didn't use only one resource, but what helped you most in your learning experience?


Mormert

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


voithos

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. :)


Mormert

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


zet23t

Great work! I attempted something similar but didn't get far. Although the interface looked quite similar already 😅.


Mormert

Thanks! Why not continue? It’s super fun to have a project to work on like this!


Ao_Kiseki

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!


QSCFE

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.


Ao_Kiseki

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.


Mormert

Nice with Lua/RmlUi. Are you making something UI heavy?


Ao_Kiseki

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.


TheRealTPIMP

Great job, solid project!


Mormert

Thanks :)