Anshul Gupta

August 11, 2017

DevLog - MAYOR ON A ROLL (Ludum Dare 39)

Mayor On A Roll

This happens to be my first ever ludum dare and turned out to be the best game jam in terms of the quality of the game that we could come up with. It was a 72 hour game jam and the theme for the same was "Running Out Of Power." We were a team of three devs (essentially all programmers). The game is available for windows platform.

I think the elevator pitch for the game would be something like this: You, a mayor of a town decides to steal people's apples because apparently your citizens don't respect you enough. You are ready to run out of your "Mayorly" powers just to teach those citizens a lesson.

This also happens to be my first devLog, so I'll just try and summarize my 72 hours of the jam here as interestingly as possible.

The jam started on 29th July, 6:30 A.M. IST and ran till 1st August, 6:30 A.M. IST.

I obviously did not start working until 10 AM, however I woke up around 7 just to check out the theme. The theme "Running out of power" was one of the themes I least wanted out of all the themes that were there when voting was going on.

I met my team at around 11 AM on the first day of the jam. We all were brainstorming and throwing random ideas on the table only to shortlist later on. I was obsessively trying to come up with a mechanic that I can link with the theme apart from interpreting POWER as ENERGY or LIFE, which I knew most of the devs would do. I thought of creating a math based puzzle game where powers were the exponents in the equations, I did a few iterations on paper for various game mechanics but could not come up with anything detailed enough to start working. We set a deadline to finalize the best game concept among all and start working and Mayor On A Roll was the winner among them all.

Before we actually started working on the game, the idea that we had in our heads was almost the 90% of what we developed in the end, so the game mechanics did not go through any major alterations after the development started which turned out to be a good thing as it spared us a lot of time for the actual development.

After the project and repo setup was complete, the three of us decided our own forte for the whole development process in which I was responsible for the core game play loop.

I categorized my tasks under four basic heads:

  • Player power system.
  • Enemy power system.
  • Player-Enemy interaction.
  • Game progression.

I first made a demo control scheme to test my systems locally and then started working on the Player and Enemy's power system. These systems were almost independent and similar to each other and thus it was really quick and easy to create these. I also created a very basic not so very useful version of enemy spawner simply for testing purposes because we weren't sure about the architecture of the level. I had to spent most of time in creating the power bars and functionalities such as aligning them with the camera so that they are always visible. Now situations like these is what I have a hard time thinking before start coding a system. I had to make a couple of changes in order keep to the code base clean. It was more of a tedious task but had to be done. Everything that I was working on was with programmer art, so I did not pay much attention to how things looked on the screen as of then."

I created a main PlayerManager which was responsible for controlling all the aspects of the player including it's power system. Similarly an EnemyManager exists that has the information of all the enemies spawned in the map. These two systems constantly interact with each other to pass information for every player-enemy interaction. Creating this system was apparently the easiest job. I called the day at this point, played one or two matches of DOTA 2 and slept.

For the first time in my game jam experiences I felt that I was ahead of my schedule so I took a small detour and got into Unity's Animation window. I made a very programmerish animation for the character's movement, which I put in just for myself but eventually was later put in the game because my team too thought it was good enough to go with the overall art style. Apart from that I worked on putting in some juice(visual feedback) for the only action that player could do in the game at the point of time. I made a selection circle sort of sprite and used tween to rotate it around the enemy to denote the fact that the enemy is within range. Apart from that I made a exclamation mark sprite and used tween to scale it in and out when the player interacted with the enemy.

We integrated the basic level and the functionality of the enemies following the player with the current system to do an overall test of the game experience so far.

Mayor On A Roll

At this point, I started working on the gameplay progression. I created the basic flow of the game from the beginning till the game over condition. Added random values for all the variables such as player energy depletion rate, enemy movement speed, etc. just to test the functionality of the system. Game balancing was not my major concern as of then.

After I had most of the core systems working, I started working on the details of the tweens and the movement to juice up the game. While I was playing around and testing the game loop, the level felt really big and static as the only moving element in the map was the player and an enemy only after player interacts with it. So I decided to put in neutral NPCs, just to populate the level and make the game more dynamic. It was easy to create such a system, the method I used was to give each NPC a starting and an ending position and keep on looping them between these two points based on a range of movement speed values. The problem that aroused then was the fact that it became hard to find a static character in the level which was essentially the active enemy with which the player can interact. So I added an animation of apples being eaten on top of the enemies to denote the fact that these are active enemies.

Mayor On A Roll

Now was the time for the details to kick in. We integrated the complete level setup. I did a basic camera intro sequence when the game loads. Each of us kept on testing and balancing the values accordingly while working on the basic low key stuff such as the UI and the main game menu.

Mayor On A Roll

By this time we were down to our last 10 hours of the jam. We started putting everything together, and started working on the story line for the game. We created a basic funny conversation script between the mayor and his citizens.

We were looking for bad apple puns all over the internet, puns like "apple-ing". \(*_*)/

After we integrated the conversation in the game UI, a random question came into existence from the top of our zombie-mode brains. "What if we put audio to this conversation?" And the madness began. We all sleep deprived, were randomly recording, bizarre sound effects until we came up with the "BLAH" idea which is, that the three of us recorded ourselves saying "BLAH" in a different way which we assigned to each character in the conversation. Apart from this we also recorded the in game sound effects such as when the player steals the apple or when the enemy punches the player.

Mayor On A Roll

NOTE: The game is full of bad puns and easter eggs.

We did the last testing and bug fixing round before uploading the game, went to our homes and slept, only to wake up to this:

Mayor On A Roll

Such comments made the game jam experience hundred times better. We got a total of 47 ratings so far.