Week 9 | An experiment
We decided to record a two hour explanation for today to clear some important things up, especially about why we didn't post anything yesterday.
If you're having trouble listening, here is a summary: PART TWO FOLLOWS NEXT YEAR.
We postponed this blog post to today because we were busy making a new little game: Frontrunners. In order to get out of the monotonous routine of MIR development, we decided to challenge ourselves by making a game within one week. We couldn't finish it the way we envisioned in time but we got pretty far. Further than I expected (this is positive 😀).
Dikkiedik
Abnormal week
So, for no particular reason, we decided to have a little game jam this week. Our goal was to complete a small game within 5 days. As I write this, I'm unsure if we'll meet our goal. Nonetheless, I'll show you what I've contributed to this game jam and potentially spoil the whole thing for everyone if it's not already out yet!
Frontrunners
For this game jam, we chose to create a small “podracing” game with Quake 3 arena-style graphics. My task was to design the racers, or “Frontrunners” as we call them. Here's “The Admiral,” one of the Frontrunners I created using Blender and Substance Painter:
Initially, we planned to include multiple Frontrunners in the game. Unfortunately, we only managed to create two, but I DID design multiple skins for The Admiral. Here's one example:
Realising we had a bit of time left, Koof created another Frontrunner called: “The Beetle” which I textured after he modeled it in Blender. Here's The Beetle:
All designs are based on concept art and rough sketches I made, which, by the way, took me WAY too long to draw. Consequently, we didn't have enough time to create more Frontrunners. I'M NOT THAT FAST AT DRAWING AND MODELLING STUFF, OKAY??
UI
Lastly, I created some concept art for the UI of Frontrunners. Have I mentioned that the game is called “Frontrunners” yet? No? Well, there you go, the game is called Frontrunners.
Here's the UI concept art I created:
I say “concept art”, but I'm not sure it's the correct term to use for art like this. Let me know what you think is the correct term in the comments below!!
Oh, and I created the icon for the .exe of the game, which Zooi hopefully decides to use. I would understand if he doesn't, though, as it looks like crap, to be fair.
That's it lol
It was really fun to work on a 3D game for once. Who knows? Maybe we'll continue working on Frontrunners as a fun little side project!
I know most of you would prefer us working on MIR, but especially Zooi needed some kind of break from working on that game non-stop. I know we've mentioned multiple times that MIR is almost finished, and it's true, it is almost finished! But I am painfully aware we keep pushing its release date further and further away. So at this point, I won't even hint at a possible release date, and just say that it's done when it's done. Overused, I know, but I just won't allow myself anymore to give anyone false hope for no reason by blindly handing out release dates. I guess I was a bit too hyped about our game and mistakenly put a wrong release date in the official trailer for MIR. Lessons learned, won't happen again.
Ending on a positive note, next week, we WILL continue working on MIR, and we WILL finish the goddamn game eventually.
Thank you for your patience, and catch you on the flipside!
zooi
PPG
I have made a lot of progress on the activation rewrite but, as I predicted towards the end of my most recent video, I have encountered a problem (again). The largest obstacle in this entire thing is the continuous activation signals, whose definition has always been confusing. Is it a signal that is called every frame? Is it the a state of an activation node? The codebase is unsure of this, and the two concepts are intertwined. If the game didn't have continuous signals, I would've been done with the rewrite nine billion times over.
Frontrunners
“Game jam” but we are the only contestants. I am very happy to get to work on something new and exciting, even if it's just for a few days. Also we probably won't get to finish the game in the way we envisioned, but that is a defining trait of game jams.
Timeline
Here is a series of images to showcase the progress we made over the past 5 days.
I had just implemented the initialisation, positioning, and rendering of the world and racer. The world is imported using Assimp, and created in Blender by Koof. There are no textures yet, and the world is UV mapped using world space XY coordinates. The player can't move.
The world now has texture coordinates, and the debug checkerboard pattern is rendered correctly. The blue box is a rotating box collider. The encapsulating green box is its bounding box, which updates in real time. This is where I started implementing colliders and world querying. Most of my time was spent here.
I imported a concave (WHY??) model of Suzanne to test if the physics queries even worked. Due to technical issues, all the world colliders ended up being arbitrary convex shapes, which are more difficult to work with than primitive shapes. The player can move and rotate as of this screenshot, but goes through walls.
After getting basic collision to work, I started importing Koof's textures. The Blender material included a shader node setup to interpret a mask texture and output snow, rock, ice, or packed snow. I wrote a shader based on the node setup, but got the order wrong (as you can see lmao). I imported Dikkiedik's racer model and messed up the orientation of the engines.
The engines now turn with the player steering.
I fixed the shader and added a sky colour :) Kept trying to improve collision and world querying. It turns out that functional collision is really difficult. Even after days of work, the player can glitch through walls without much effort.
I did not make this screenshot so I don't know what happened here. Maybe Koof was happy with the obstacles being rendered properly?
I added simple visual effects like fog and snow particles. The engines are still wrong and there are still a million issues with collision, but things are improving. It is no longer easy to phase through walls but it's still possible.
Collision still has issues, but no longer severe enough to warrant any more development time. The engines are oriented half-correctly this time, which is a little better. Koof changed up the trees and the entire map and Dikkiedik added bleachers to the spawn area. This is also when Koof provided me with lightmaps for the world, which were easier to implement than to bake. AI racers now fly around the map. They work by loosely following a set of predefined paths, represented by a set of nodes. While driving (?) I press F9 to create a node at my current position. I do this a bunch of times until I reach the finish line. F10 saves the path to disk. The AI try their best to smooth out the path by considering the next point over, and interpolating their target direction based on various factors.
AI works surprisingly well, although poor path definitions inevitably lead to them crashing into walls. This screenshot was made in debug freecam mode, to show the player racer and a nice part of the track. At this point, the final day was basically over.
Setbacks
This week was very busy (outside game development) and it's slightly unfortunate that this experiment was done specifically during this time. I definitely could have done more if I didn't have so many appointments, but it ended up pretty alright anyway.
This game is made in a custom game engine. Worse, this game engine was not initially designed for 3D games. During the development of this game, I had to implement a lot of basic 3D things such as 3D debug drawing, 3D particles, 3D collision queries, 3D geometry utilities, etc. It was fun and encouraging for future games we want to make.
Sorry if you expected MIR/PPG updates this week, I promise I am moving along!! Thank you for your patience again.
Koof
Hello
I worked on a new quick game, called Frontrunners. This game had to be finished in one week, we just wanted to finish a game :(
I quickly made this concept art in Blender of how we wanted the game to look, the actual game actually turned out way better than this :)
I was mainly in charge of the map. I wanted a snowy terrain, where most of the space is used. I created some textures using Blender's material nodes. Seamless textures were generated in world space and then baked onto the UV of a torus.
For differentiation between textures, I made a texture using the main RGB colors to represent materials such as rock, snow, ice, and packed ice (Black for snow). Additionally, the map needed lighting, which I did by adding another UV map and used Cycles to bake lighting onto another texture.
This is the end result:
The map also needed collision which was horrible to do, I had to put these boxes everywhere basically. Hell.
I did not work on anything else lol
Next week, Frontrunners will be done so I probably work on MIR or my greeble assetpack.