Untitled Game Engine! banner

Untitled Game Engine!

8 devlogs
20h 55m 48s

Basically a game engine made using Vulkan in C++. I’m still torn between regular and voxel. It’s just me working on it, and quite frankly it is scary thinking of how big of a project it is, so I’m keeping progress slow and steady.

Loading README...

jcfhjcftug

A minor fix.
As you can see, contrary to the last devlog, the triangle is a bit taller! Why? Turns out, I’ve been using the same aspect ratio for the scene view as I was for the rest of the UI. Rookie mistake, innit? Either way, to fix it I just expanded my descriptor pool, created additional descriptor sets dedicated to the scene view, created new uniform buffers for those descriptor sets and bound the descriptor sets when binding the Scene pipeline. A simple fix, not gonna lie. Next up, ray tracing! yay…

Ephesians 4:2
“Be completely humble and gentle; be patient, bearing with one another in love.”

Attachment
0
jcfhjcftug

Shipped this project!

Hours: 17.72
Cookies: 🍪 220
Multiplier: 12.39 cookies/hr

Created the XML parser, used it to create a basic (extremely basic) UI layout and get an even more basic scene rendering.

James 1:2-3
“Consider it pure joy, my brothers, whenever you face trials of many kinds, because you know that the testing of your faith develops perseverance.”

jcfhjcftug

Oh my, this took a lot.

I had to create a whole another pipeline for this, and fiddle around with the viewports.
I also ran into a weird issue where 1% of the screen turned into 1.46% after it was displayed.
I don’t know how I fixed it, it just went away and we’ll keep it at that. Amazing.

John 3:16
“For God so loved the world that He gave His only begotten Son, that whosoever believes in Him, should not perish, but have everlasting life.”

Attachment
2

Comments

Jahaan
Jahaan 2 days ago

I’m basically doing the same thing, except I’m making a graphics engine in vanilla java, so its a lot different in terms of how you manage data and memory allocation, but the underlying concepts for triangle rasterization, and other graphics concepts are the same. I’ll be looking forward to your progress.

jcfhjcftug
jcfhjcftug 2 days ago

Thanks! I’m actually gonna go for raytracing in the scene view (the black part). I have no clue how to do that yet, though.

jcfhjcftug

Today’s a boring one.
I just improved the XML parser a bit, which did take WAY longer than I wanted it to take.
Oh well.

Attachment
0
jcfhjcftug

Hi!

I’ve finished working on the XML parser (for the most part, i can only render “Frames” for now).
This was quite a challenge, requiring me to consider multiple solutions to various problems.
I suppose the next step would be to add buttons or stuff.

Attachment
0
jcfhjcftug

This was rather long, and I hated every second of it. Eh, I guess you learn through pain. The result is underwhelming nonetheless. What I’ve done is I made a very basic XML data parser using pugixml. Sorting and figuring the data out was a real pain. To be fair, I’m still unsure whether it works. Hopefully it does. I hope the next devlog will show the data being implemented.

Attachment
0
jcfhjcftug

Had to install NSight for this one. I added Uniform buffers, descriptor sets, etc. This allows me to translate, rotate both the geometry and the camera! Now that’s fun. It really is not. Either way, this should allow me to make a GUI, at last.

Attachment
0
jcfhjcftug

Shipped this project!

Hours: 1.81
Cookies: 🍪 14
Multiplier: 7.8 cookies/hr

Finished the basics.

At last, the very groundwork of the Vulkan rasterizer is done. Now I’m here with my square and a vision. I really didn’t enjoy writing this, but I suppose I learned more about how Vulkan works. On the bright side, I’m now able to move on to the more juicy stuff, which I’m surely looking forward to.

jcfhjcftug

Now it’s not just a triangle, it’s a square. A rather neat one as well.

What I’ve done is optimize memory a bit by using so-called Staging Buffers. These buffers allow transferring data from the HOST_VISIBLE | HOST_COHERENT memory to the DEVICE_LOCAL memory, effectively improving GPU read times. Another thing I’ve done (also the more noticeable one) is implement index buffers! These allow me to reuse vertices and help me draw a beautiful square like this one with just four vertices instead of six.

Attachment
0
jcfhjcftug

Still using the Vulkan tutorial (vulkan-tutorial.com), however in a somewhat ‘me’ way. Vulkan is honestly such a headache. I can never remember what comes next. Enough ranting, I’ve managed to get the Vertex Buffers working, and I’m getting quite the beautiful triangle. The result is kind of underwhelming for this amount of code and work, however I’m still proud of it.

Attachment
1

Comments

agrus101
agrus101 25 days ago

hey