Convergence โ Post Portem
Had a lot of fun this Ludum Dare; theme was great, and the game idea came pretty immediately.
If you haven’t played, well, why not?
Tools:
- Unity3D
- Paint.NET
- Guitar Pro 6
- Audacity
- Prototype (Unity asset for geometry modelling)
- MonoDevelop
Convergence is a (very) short multi-dimensional puzzle/story game, where you switch between dimensions to reveal paths/hide obstacles. It drew some inspiration from the early levels of Half-Life 1, where the aliens were invading through rifts in space. The difference being that you were being torn between nearly-parallel dimensions, instead of being a bad-ass scientist.
It was originally intended to be a mechanic you could activate at will, but many puzzles became problematic due to the fact that I wanted to avoid jumping puzzles (they aren’t good in first person!). This led to most puzzles being completable in seconds.
So, like every Ludum Dare, the mechanics took a big ol’ midway change, and now the dimensions are changed by activating a pedestal. This prevents a lot of the problems, because the pedestal is only interactable in it’s designated dimension, much like the puzzle elements. Unfortunately, since all the levels were designed around the original idea (and didn’t work with the new method), I had to scrap everything, and with barely any time left, I only had time to make 1 ‘puzzle’. But, the mechanics work in a pretty simple way now, so it’d be easy to make levels after more design work.
This was the first game I’ve made with dialogue. It wasn’t very good. I recorded it in the final couple of hours, after I had been awake for 27+ hours at that point. I recorded with Audacity, adjusted the pitch, treble & bass, as well as amplified then reduced to add distortion (albeit only a little). Then some reverb was added, and even more was added inside of Unity with an Audio Zone.
Audio was triggered by invisible trigger zones, which doubled as ‘event’ zones, too (like the first time the dimensions switch).
I’m not a fan of unnecessary HUD elements and tutorials, so I tried to incorporate them naturally into the game. The controls are written on a sign on a wall in the beginning, in the style of a safety advisory board, and the voice-over lets you know you can open doors. Rather than having an indicator telling you what dimension you are in, you can pretty easily tell, since the walls will change colors. Looks much better than an icon ๐
The levels were made with a Unity asset called Prototype (a cheaper, but reduced version of ProBuilder), which allows you to take a primitive (like a cube), and extrude faces, rotate them, etc., to create neat-o geometry. This is a vital tool for me, because I don’t know how to model with ‘standard’ software, like Blender, or 3DS Max. I built 3 rooms, a tunnel, and a crosspath, and simply reused them to create the levels. I also created the cryo-pods with the same tool.
Because I was taking part in the Dare, and the source needed to be provided (and because I also like to include the builds), I exported all the models made with Prototype into OBJ files, then reimported them. Unfortunately, they weren’t named properly, so it’s impossible to tell which model name is what, without checking it manually (sorry to anyone who looks at the source!)
The human models were created with a free program called MakeHuman, which does exactly what you’d think it does. They’re even rigged, but I’m about as good at animating as I am modelling, so they just float there… In stasis…
The textures were all made in Paint.NET, with the black tiles simply being an inverted duplicate of the white tiles. The Purger used the black tiles for his emmittence effect, and his wings(?) were made from a different texture. That effect was actually completely accidental, but I liked it a lot so I altered his design to incorporate it more.
The worlds were switched pretty simply – I had a public bool called ‘currentWorld’, and the idea was that ‘true’ meant you were in the normal world, and ‘false’ was the ‘other’ world. The texture of the walls were changed based on this bool. A separate script was attached to each mesh renderer that was world-dependent, and changed the alpha value of its material based on the world. If it was a true world object, and the currentWorld was false, the alpha would be lowered. If not, it would be completely visible. This made it super-easy to set up which objects should be visible when.
It also made it super easy to determine which sounds to play, since all the sounds were added to the same GameObject.
Overall, I’m happy with this game. It’s much shorter than I’d like, and it’s not at the quality I’d like, but everything was present – audio, textures, dialogue, gameplay, etc.
I’d like to use the boss in something else later on, since he’s my favourite part of this whole thing!
Looking forward to the next Ludum Dare!
