I am... a man... OF THE SEA!!!
About Prelucid (twitter: @Prelucid)
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.
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.
I’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!
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.
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.
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.
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.
Wow, so I think I’m really happy with my submission. I wasn’t even planning on taking part my second time around, but having the JAM really allowed me to relax more compared to my first LD48. The result is a gem which I’m always going to be proud of. The character I ended up going with is Dot Solid. I originally designed him long ago, but his name was Sucre and he was going to go on an adventure through the kitchen as a sugar cube, but this theme really made it possible for me to do more than just sit on the idea. It was a match made in heaven.
The funny and coincidental thing about the game being affectionately titled after Metal Gear is that when I needed an end boss battle, I just ended up combining all the platforming obstacles into a creature that resembles Metal Gear Rex. Serendipity?! I think so.
Potato achieved! Game is nearing completion. All that’s really left is a boss battle and some menu building. I’m glad I decided to take part in this. I was really not feeling it before, but this was fun and I’m pretty proud of the game so far. Props to Unity for making an engine that makes it really easy for FPS and Platformers to be made.
Have my first Enemy AI. The game is a little over half complete. Still have 29 hours to go. A lot of fun. I have yet to put music on the game, but I think that would be anti-minimalist if I put it in for no reason. The in-game sounds are good already.
Been going really well so far. Making this game without a main delegate state machine. I’m glad I put a lot of hours into the main character. It is really making at least the beginning part of level design easy.
Just updating progress on my game so far. Spent all the time modeling the character and getting the motor going in Unity. It’s not surprisingly difficult to morph platonic shapes into each other. I decided to Jam this time around and use Unity because I didn’t have any colliders prepared for my other framework.
Just relaxing this time around. Might Unity, might GLBasic. No idea. Might even forget come next weekend.
I had no idea what the goat was about, but because of all the mentions I assumed it was an inside joke, so I ended up putting one in my game. Now I’ve read that it’s a bonus theme?
So I was ready to just leave what I had in posts and say I couldn’t finish, but my fellow AGDG’rs kicked my butt and said I was crazy because I still had 12 hours left. I decided to not sleep that night and just make the game presentable. Cutting the features I wanted to put in and making the game winnable/losable. The result is this: http://www.ludumdare.com/compo/ludum-dare-25/?action=preview&uid=17759
The Fall and Rise of Rome: Patient 0 A.D.
You are the first zombie. JESUS CHRIST. That’s not an exclamation of surprise, I mean Jesus Christ was the first man to rise from the dead. This is the origin of his rampage that led to The Fall (and eventual rise, like from the dead) of Rome.
What I learned: I was more prepared than I would have been if I didn’t sit down and work on my framework. I was less prepared than I needed to be in terms of looking to implement simple things that should have worked off the bat. The timing in my engine was flawed and it affected everything. The game doesn’t run at consistent speeds and one bug in particular cost me 5-7 hours just trying to fix, breaking my engine to a point where I was worse off, spent more time on 2 attempts just trying to get back to having One bug, and then just decided to cut the amount of times the bug occurs in half by making there only one way to kill a bad guy.
Cutting features was the compromise and saving grace of meeting the deadline. While I fully appreciate GLBasic, I didn’t know it well enough and it cost me. I will have to get some more experience with it. I literally used it for a short time back in 2011, bought a license, spent a week on this framework and then stopped for some unknown reason. I picked it up again 2 weeks ago, patching in physics, listeners, etc… I think next time I have time to do this… until I’m more experienced with coding, I may relax and Jam, providing my art skills to an online team or something. I know for sure, my lack of experience in cost me dev time as well as art asset time. I could’ve at the very least made this one-level intro more beautiful. Maybe I’ll go for Unity next time as that’s what I’ve been using a lot of lately.
As usual I uploaded random check ins to my Youtube playlist. Also planning on putting up a timelapse of every waking moment after I get it together into a video.
So I spent about 5-7 hours on one animation bug, which I still haven’t fixed. :O At one point during those hours I actually almost rendered the engine unfix-able and surprisingly worse off than it was before, haha. Those hours could’ve been spent working on the other mandatory necromancy mechanic, and actually creating the level, but now it looks like it’s not going to happen. The framework is fundamentally flawed for this type of game (and well for pretty much any type of game I suppose hahaha) and I’m starting to remember why I only spent a week on it 4 seasons ago.
So this is what I’m presenting for now.
I’m going to get some sleep. When I awake, I will have about 5 hours to tweak around, but something tells me since I’m back to square 1 after the previous 5 hours, hahaha, so there won’t be much progress anyways. I’ve learned a lot in my first run with Ludum Dare!
So woke up today around 12pm. It’s now 4:30pm. I slept around 7am and lost lots of time due to just laying there in bed.
Checking in. Just looking at the list of things that need to be done to make this game… *gulp* fun… I’m not too confident about meeting the deadline 25 hours from now. I learned a lot so far though. The first is that everything you thought you prepared is broken and needs to be fixed on the fly.
I’m regularly uploading random progress on my youtube playlist here. I’m sorry if I talk too fast or too quiet at times. I’ll be uploading my timelapse at the end.
Having a problem with oversized textures. Seems redundant considering the pixelation of my characters. I may have to rework the engine so far to upscale instead of using multiple sizes.
Getting late. I’m no good at sleeping at the light switch, so contemplating how I’ll save time while getting to sleep tonight.
Everything’s going fine at the moment. I got a character on screen, he walks, and attacks. Is animated etc… Working on the background at the moment before diving into making the enemies or the good guys, so to speak.
This is the screen at 1:1 pixel so far.
Tools I’m using:
Never published a game with this, I just recently prepped it for this competition.
Photoshop… and maybe Maya/Zbrush if the occasion calls for it (highly doubt it). I have a tablet which I’m none too familar with but if art takes too long, I might have to see what I can do.
Not my department, but I have Soundbooth installed for crude edits.
sfxr for generating sound effects.
I also have voice band which will let me hum notes and convert them into instruments. And other Android instruments.
I’m probably going to order two pizzas and a two liter drink. Swiss Chalet.
I’m doing a timelapse of my computer while I do this in addition to real time recordings generating content, or when doing stuff where computer performance doesn’t effect testing. I also need to conserve on the hard drive space so not so often.
I’m going to be blasting Yellowcard or Epic Sax Guy in 10 hour loops when not recording sound in order to keep my eyes open.
So I’m going to do this. I first heard about Ludum Dare about a month ago on AGDG, but didn’t really know the specifics until last week. I probably won’t finish on time, hahaha. In the past I’ve completed projects between 3 days to 3 weeks and ‘started without finishing many more‘ using everything from LUA, Basic, Flash, to Java, C, Objective C, and recently C# in Unity. I figure if I actually buckle down and used every waking moment within the 48 hours, I could at least do something half-decent.
Depending on the theme I will either use vanilla Unity for a 3D game, or GLBasic for a 2D game. I’m more designer/artist than programmer. I have terrible memory when it comes to syntax/API so if I make a 2D game with GLBasic, I will be using my own Phoenix Framework available here for vetting/download and randomly referencing GLBasic API Documentation.
I never actually used it to finish a game before and don’t know if I can even remember how to use it (from a week of work in Sept. 2011 for the Pandora console, which broke) so I’m on the same foot as anyone else wanting to use GLBasic and this framework, with 2 weeks to figure it out. If I remember correctly, the framework just helps deal with display settings, auto scaling, bitmap fonts, organizing on screen graphics, parallax layers, vector animation/transitions, and virtual keyboard/mouse.
Update: Wow, so I actually took the time to get familiar with the Framework and I see I’ve really messed up on a lot of things. I guess that’s what happens when you stop developing and can no longer distinguish between what you thought you did and what you planned to do.
Okay so what I’ve done since is fixed a whole lot of stuff that didn’t actually work, like graphic alignments, scaling, and other neglected details. There are comments and examples of functionality now in the main delegate and files are separated into different sections that perform certain tasks. I added sound functions. Sprites can now be loaded from TexturePacker sprite sheets (exported with Ogre settings) and will animate. Box2D has been crudely implemented and can be attached to sprites so that they follow the center. The barebones of file saving/loading is included now. Will import Tiled maps.
Things it still needs:
Listeners still need some work if I want to actually detect clicks within an object’s boundary. That’s if whatever game I make will need a mouse.
I made a video giving an overview of how it works. http://www.youtube.com/watch?v=R7xW9X8O9pA