Platonic Dot Solid – Post Mortem

Posted by (twitter: @Prelucid)
April 30th, 2013 1:43 pm

The Tool: Unity

So around two weeks ago I made a reluctant post about being in for the Jam. I wasn’t sure if I’d take part or not, as I didn’t have any colliders prepared from my normal 2D framework, one of the harder lessons from my first Ludum Dare, the other being a hard 7-hour-costing lesson in buggy animation (which I later fixed). In fact I used Box2D the first time around, so I didn’t have any collider experience off the top of my head. Like the first time, I had to decide between GLBasic, or Unity+C#. The first time I chose GLBasic because I knew off the top of my head 3D modelling can be costly with rigging/weight painting, and I hadn’t spent enough time figuring out 2D.

I think ultimately the difference here in going the Unity route, was that it presented challenges I was aware of, but going GLBasic appeared less threatening and problems ended up creeping up on me the first time. This time I chose Unity and the result was much better. Not to mention getting 72 hours in the Jam as opposed to 48 hours of crunch time. That said, Platonic Dot Solid could have been made in 48 hours as I took a lot of relaxation time, and much of the last day was spent polishing up the boss fight. Also, the web based player is really convenient.

 

The Theme: Minimalism

The most minimal idea that came to mind was math and the elements. For me, this boiled down to Sacred Geometry and the Platonic Solids. Influenced by Plato’s ideas, the Platonic solids each represented a basic element: Earth (Cube), Fire (Tetrahedron), Air (octahedron), Water (Icosahedron), and Dark Matter (Dodecahedron).

On top of this, I also wanted to represent the conflict between humanity and the Djinn. In typical Biblical stories, there’s this idea of angels turning bad and becoming demons, but in the Qu’ran, angels have no free will and the Djinn are the only ones that may turn evil out of their jealousy against humans inheriting the Earth.

sucre

 

I created Sucre Cube a long time ago as a spontaneous 20 minute idea for a Sugar cube that travels through a kitchen to save himself from becoming used in coffee. I never fleshed out the idea, but when this theme came up, Sucre became Dot Solid. I remodelled him from scratch, but starting with a sphere. I liked the idea of a one dimensional dot becoming the whole of the 11th dimensional universe. I never followed through with making part of the game 2D, as a progression through dimensions, but I still like the concept. The texture is really the only thing I came into the Jam with.

morphI’m not 100% happy with the morph to Icosahedron, but I spent 5 hours on it. Blend Shapes or Morph Targets aren’t possible in Unity without an add-on by Chris West called Megafiers. If you use Unity, I think this is mandatory for intentional design and really the only must-have add-on for me at least. It cost $150 but the price is going up soon, so hint-hint.

 

What Went Right

Because of juxtaposition between all these ideas, including a nod to Metal Gear Solid (originally in title alone), everything seemed to come together serendipitously. By the end of the 48 hour deadline, I pretty much had the game done, but I needed a boss battle. I’ll admit, a bit of laziness led me to putting together different elements of the level to create the enemy. But then something magical happened. I created, METAL DJINN!

metaldjinnHis legs were made of pistons, his arms a Cannon, and his head a Dodecahedron Djinn.

I would have liked to add a lot more sounds like footsteps, or the pistons slamming, but automated looping animations are hard to synchronize properly with sound. The humorous voice by Camila really made it easy to not feel that bad about dying. Dying is not a serious issue in this game, which I think is something that works for games. In fact, more people wanted closer checkpoints. Possible one after each obstacle. This says something about casual games and experiences being compartmentalized. I could really consider making a mobile version of Platonic Dot Solid with single challenges and a proper save.

What can I say about the graphics? They were easy to do and they worked. I guess this is one case in which limits influence style. The graphics themselves are minimal and it allowed me to build levels completely out of primitives. I’m happy with the animation. HumanIK in Maya makes it really easy, as did using Legacy animations for Unity 3.5.7. Mecanim would have been overkill and as I still haven’t figured it all out, there’s no way I’d get the game done in time if I did this with mecanim in Unity 4.

MORE LOVE – Is a song I first heard from my friend Ahssan, who I met in University (for Interaction Design & Performance and Media Arts). That was about 10 years ago, and recently he let me hear version 5 of it which is a testament to his improvement. Both songs are used in the game. V5 for the intro and V1 for the ending. I love this song, but I didn’t always love Ahssan’s music. In fact I was the first person who honestly told Ahssan he couldn’t sing back in 2003. He came up to me one day and said he cried and screamed in his pillow, which I felt bad about, but he then said he realized he owed me a debt of gratitude because he had been spending a lot of money on lessons (his teacher even admitted to stringing him along). Today he raps and just synthesizes the music end of things and I think he’s really good at it. In this case, honesty was the best policy. I thought it was a perfect fit for this game.

Ideas for level design were well influenced by the first 5 hours I spent building Dot Solid. Knowing what his powers were, I could built platforming obstacles around them. One thing I wanted was multiple ways to pass certain obstacles and the Fight or Flight section (Timing or Force) had 3 different ways to pass it. This I think is an important part of good games. Sometimes you have to let the player play how they want, in their style.

 

What Went Wrong

AI was difficult to put in. I had simple facing scripts, but walking and pathfinding towards the player, firing at him was a mystery. I wanted the final boss battle to be a lot more epic, and less tedious. Yes you can fire at him from the top boxes, but I wanted the player to jump on his head and fire from there. The wind powers were too hard to control in both perspective and orthographic camera modes. I also wanted the boss to have 3 different forms, or timed sections where the player would be challenged to use each of their powers intelligently. In the end, I think Metal Djinn could be improved, but this is a challenge for another day.

Though initially, level design was very easy, as time went on, I started to repeat a lot of elements. I think in some ways this is necessary as it asks the player to get used to using the power, but I would have liked more diversity. I never had a chance to make sections of levels where the player had to use the sphere form to outrun a giant boulder like in Indian Jones. One of the reasons for this is that the orthographic camera makes it difficult to make bobsled-like tracks.

I should have made my game controller-friendly by not requiring the Left-Shift key.

cannons

BULLETS! These little 2D bullets which always faced the orthographic camera. This was easy to do when they were fired down the negative z-dimension, but when it came to firing Fireballs from Dot Solid, or Cannonballs from Metal Djinn, I had to overhaul it a little bit. They went all over the place until I set them to fire directly from the tips, and rotate towards the arm’s aiming direction. The fireballs were made collide-able, to make them less cheap, but I noticed when doing the same thing for the Cannonballs, they made the bullets look sloppy, arcing like a wingless bird. They also rolled around everywhere and made the last boss battle look ridiculous. In the end, the Cannonballs had no collisions, but the fireballs did.

 

Player Feedback

People complained about the controls, which I think is understandable. People don’t like cheap deaths. Most of the time, we’d like to die when successfully doing what we wanted to do. In this case, I thought it added a challenge to the game, as did the orthographic camera which I intentionally abused to mislead the player into false solutions. The good news is you’ll never truly die in this game so it’s basically just a challenge of patience. The game can be completed in 3 to 10 minutes. Possibly longer. The bad news is that my 4 year old nephew couldn’t wrap his head around it, but enjoyed watching me play it.

The orthographic camera was an intentional obstacle, but I noticed a number of players really wanted clarity in this. So this teaches me something about the player wanting challenges that don’t exist in the controls/interface of their character. I think that’s a very valid point. The original Resident Evil was very scary because it was so hard to control your character while escaping, but it feels cheap to die when your character doesn’t do what you expect it to.

The art style was the biggest positive and I kind of agree. Secretly, I’ve always wanted to see shaders that automatically add cross hatching or other patterns to objects so that I can do a game in the style of Valkyria Chronicles, but prepared textures seemed to work fine so far.

 

Conclusion – What I Learned and Need to Learn

This was my second Ludum Dare. The biggest lesson of my first Ludum Dare was that sometimes you have to cut features to ship. This time around I didn’t have that problem, but I think the biggest lesson was that you can never make a game too easy, and making a game both easy and challenging is in itself a challenge. I was planning on adding a hardcore mode (with one death), which would have been about 10 minutes of work, but then I realized that at one point in the game, you are supposed to die to advance. I didn’t want to risk offending frustrated players either.

AI is the next frontier. Even if I have to figure out how to use an add-on with behaviour trees, AI is really important in 3D games. Pathfinding goes hand-in-hand with that. For whatever reason, I’ve come out of this Ludum Dare really interested in procedural/random level generation and multiplayer, but there’s nothing I dislike more than an absence of bots, so I really should figure out AI first.

Colliders. Although Unity makes this really easy, I still need to understand how to build this from scratch someday beyond simple box checking.

C# and Javascript do not communicate together well. I like C# more, but for the enemy rotations, for some reason I used Javascript as I learned it that way from the Tornado Twins. It’s not that I can’t do it, it’s that the porting hasn’t been done yet and it took less time to come up with a cross-script call.

All in all, I often fall into the trap of procrastinating, just because I know how much work is ahead of me, but when you buckle down in a game jam like this, it really brings out the best in you. Also, using Sucre or Dot Solid officially removes a game idea out of my mental vault of ideas. I wasn’t planning on participating but I’m glad I did and the community is the best part. I’ve only heard constructive and honest criticism, but mostly supportive comments. A much better contrast to when just posting videos of progress on youtube or forums and getting death threats for it. Hahaha… that actually happens.

I’m really proud of what I created so I hope more people will get a chance to play it.

http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=17759

 

 

Tags: , , ,


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]