Last weekend (May 29th – May 31st) I participated in Mini LD #59 with four of my acquaintances from reddit. This is the first time for me to participate in a MiniLD as I am usually a full LudumDare Compoplayer. MiniLD usually runs for more than two weeks, but since we all have time commitments to other things in life we all decided to jam it out on its last weekend.
All of us originally met on gamedev reddit and started a gamedev text chat on google hangout where we often talk about games, show our progress what we have been working on in our spare time, share and exchange ideas etc etc. Its a lot of fun to hangout with like minded people.
Everyone in our group appreciated the MiniLD #59 theme which is basically swapping your sprite sheet with someone else’s before submitting the game. The demo sprite sheet was released on the website, which introduces us to the dimensions and layout of the sprite sheet we needed to create. The impact of this is that you have no idea how your game is gonna actually look like until the end. For e.g; you might have created a sheep in your game and it may get replaced by a turtle or spikes or a blank tile or anything else that you cannot even imagine of. This makes the game design a little more challenging because the game should not be art driven. We cannot rely on a certain style or objects with specific representation and let it drive the gameplay. We have to make sure our game will be understandable and playable even after replacing the sprite sheet with a random one.
We started our 48h game jam around 9:30PM on Friday (May 29th). Everyone was equally motivated and determined to deliver a finished game by the end of 48 hours. We used google hangout as our primary communication tool since all of us reside in different towns and cities.
Like any other game jam we began with a brainstorming session that lasted for an hour or two. We discussed few game ideas within the limits of the sprite sheet layout as it was an obligatory to follow the standard. We also discussed our skill sets as it was our first time working with each other. To comply with the theme (Swap) we settled on a mechanic that that will allow the player to swap their position with any other object in the world provided the object is configured as swappable. We also had this notion that the player has somehow acquired a super power that allows them to slow down time and swap any two objects in the world provided the objects are configured as swappable. For e.g. if an AI unit is shooting towards the player, they can swap their position with another object in the world in order to dodge the incoming attack. Cool, right? Everybody liked the idea and the work began.
Whats the setting of the game? we don’t know.
Whats the purpose of the mechanic? we don’t know.
How the game will be played? we don’t know.
Whats the win or lose condition? we don’t know.
How the player will progress in the game? we don’t know.
Is it a puzzle or a brawler or obstacle avoidance? we don’t know.
We never bother to ponder long enough on these questions and left those unanswered and this is exactly what bit us hard in the end (IMO). Not having a clear vision about what the end product will look like kept us unproductive from time to time. We often question each other about the kind of game that we are trying to make.
Stephen was working primarily on the art assets and also learning how to make music using Reaper at the same time. He came up with this cool business man looking dude and other assets in the game. Here is our sprite sheet that we submitted. Hopefully someone is using it
Zach was our main sound guy. He started pumping out awesome loops within two hours using his big stack of musical instruments. Listening to those kinda makes me feel like making a game similar to Audiosurf. He was also involved with level creation and contributed to art as well.
John, Larry and I was mainly working on programming tasks.
John helped us in overcoming all of our git nightmares.
BTW, Larry loves drawing on people’s faces. See what he did to my face 😀
As we set sail into the development, we had some intermittent discussions about the overall look and feel of the game. The style of our game was completely dependent on the art direction so we had to stand by a little before we had some mockups. Once we had those we came up with the style that the player will play as an angry office worker. An angry office worker who somehow acquired a super power that allows them to swap positions of two objects in the game world. The player will then have to disrupt a normal working day and wreak havoc in the workplace that they hate completely.
By this time, we had a somewhat clear idea about the type of game we are working on but we were also a little ignorant about the way the game will be actually played. We continued working on these smaller game mechanics (while not paying attention to the overall bigger picture) that we hoped will come along nicely in the end. When most of those individual components were ready, I personally had a lot of trouble giving all those features a purpose that may or may not constitute a game. At this time I knew that we are quite behind in our deliverable. We stayed focussed and tried to push it through as much as we can but unfortunately it all fell apart in the end. Our first level was incomplete in many aspects and there weren’t enough art assets ready to populate the level. Clock kept ticking and only 4hours left to submit the game. It was then I proposed that we must call it off and accept failure :(.
Unity3d and source control don’t like each other, at least from my experience. Often times we were facing problems with merging each others changes and losing library references every time we try to pull new changes from the repository. The solution wasn’t straightforward and every time this happened we either have to search the entire scene for the missing references, fix them and push it back to the repository or stash our local changes, pull the latest commit from the repository and redo all the changes. This was getting annoying and it wasted a lot of our precious time.
This is the second time I failed in a game jam. At least we tried.
“Trying and failing is better than not trying at all”
It was a bit disappointing that we were unable to produce anything after spending 48h on it. But again:
“If you have never tried, you have never learned”
And we definitely learned a lot of new things in our quest to make a game in 48h. This learning is not only limited to the game development or third party unity plugins that we used in our game, we learned about each other, the dynamics with which we work, our interests and familiarity with variety of tools and tech and everyones thought process. This will definitely benefit us in our next undertaking.
Usually I am quite early with writing my post mortems, but between work, deadlines, and of course more game development, I didn’t really have the time to write one. Frankly, I don’t really have time either way, but writing these is always so much fun. So here we go! (more…)
although we haven’t been able to participate in Ludum Dare this time we still would like to show you our last game, which would have been quite fitting for this theme…you are a bunny defending a giant carrot and killing mutants with, well, CARROTS! 😀 We have been working on our last LD31 Jam entry “Of Carrots And Blood” and we have released it on itch.io for free for Windows and Mac and it is also coming out on Desura soon. We have added powerups, different enemy types, a global highscore for the single player and we have also added a local 2 player Co-op mode (which is the most fun) with a big boss fight surprise in the end! So please check it out
And for those of you who already know the Jam version, it would be really cool, if you could compare the two versions and tell us here in the comments, if we applied your feedback for the better or worse 😉 More feedback much appreciated!
(2015/05/02) Post Compo Version!
[Fixed] Hand Collisions
[Changed] You no longer have to press ‘X’ in order to pick up an item
[Changed] You are not sliding around like a crazy idiot anymore 😀
[Changed] The Maximum speed is now slower.
[Changed] The Gravitation power is now weaker.
[Changed] The Jetpack flypower is now weaker.
[Changed] Some small changes in the Highscore menu
[Changed] All sounds have been improved!
[Changed] Some graphics have been improved.
[Added] An arrow to see where you are if you fly outside the screen.
[Added] Fuel Item – You get more fuel by walking on this item!
[Added] Push – Push away your enemies if you are in trouble!
[Added] Push animation.
[Added] A new Logo!
First of all, I wanted to thank each and every person who’s taken the time out of their schedule to play through my ridiculous math adventure. The response has been overwhelmingly positive and I can’t explain to you how happy it makes me to hear how much you guys have enjoyed the game!
Anyhow, now that I’ve had some distance from the weekend and I have a free evening, let’s tear this sucker down, shall we?
Coming up with a simple and solid concept is, in my opinion, the most absolutely crucial part of any jam entry. I’ve been told that you should never run with the first idea you have, and indeed, the idea for Billy McMath falls in at idea number five or six. Some of my earlier ideas involved using the microphone in some way to interact with the game (dropped for being extremely impractical to implement) and an idea involving the use of entire mountains as weapons to defeat your enemies.
Another day, Mountain Man.
The problem with this idea and a lot of the ideas I was coming up with was the inability to develop the game play beyond “kill x number of enemies”. Even with something as big and ridiculous as mountains, you’re still just sort of hitting things a lot. Coming up dry, I decided to try and focus less on action-heavy concepts, even though the theme seems to heavily favor such ideas.
I’m not sure the exact moment that the idea for Billy McMath popped into my head, but I think I’d reached a point where I was simply going for the stupidest weapon I could think of. And that lead to the concept of a nerdy little kid using his superior academic abilities to overcome his problems. I think drawing the initial sketches and realizing the potential of the concept was what won me over on the idea.
Thankfully I eventually decided to make Billy look less like a disgusting goblin.
The idea of telling a story about a dweeby kid through shoddy drawings and stupid voice over was perfect to me. As soon as I had this idea, I knew exactly what I wanted it to look like and I knew it was the one I was using.
Only the best games stop drawing a backpack halfway through a strap.
I can say with great confidence that the final result wound up exceeding even my own expectations. As soon as I started drawing panels and thinking about the dialogue, the ideas just flooded in and wouldn’t stop. Borrowing heavily from the style of Homestar Runner’s legendary web series, Teen Girl Squad, I hit a style that let me get away with whatever ridiculous nonsense I could possibly conceive. Billy McMath is, in essence, a very direct look into that inner workings of my own brain and my own absurd style of humor.
Coding the game proved to be extremely easy. I can mostly chalk this up to finally caving in and using Unity to make the game, as opposed to my own HTML5 framework I usually employ. Most of the game’s logic involves listening for audio clips and timers to finish and firing off events when they do. The panel progression, including music changes and math problems, were all built with a giant array of objects specifying that information.
78 of these suckers is all it takes to make a game!
This made the process of adding new panels as simple as dragging, dropping, and checking some boxes. Easy!
The long of the short of it is that the game wound up being entirely functional by the end of day one, giving me the entirity of the second day just to draw and do crazy voices and basically just have a gay old time telling this story.
Doing math at a moment’s noticed proved to be surprisingly engaging.
I feel the interface of the game also successfully explained everything you needed to know about what your job is. I feel like we, as designers, should do everything in our power to avoid prefacing our game with walls of text explaining what to do (though sometimes it ends up being inevitable with the time constraints). The moment the timer starts going off and a math problem appears in your face, it’s immediately obvious that you should type in the answer. Every streamer I’ve seen play the game has been able to figure out what to do without any complicated explanation of the controls. I’m extremely proud that I managed to pull this off!
I think, however, the most important thing about this game is that it wound up being a very personal tale despite all of its wacky hijinx. Perhaps because it reminded me of TGS so much, Billy McMath took me back to my experiences in Middle School and how weird and out of place I felt. Crindy’s speech at the end of the game is, essentially, what I would tell my Middle School self if I could sit down and talk to him now. I’m not sure why I decided to make the ending as sincere as I did, but when I started thinking about how to conclude this thing, nothing else made nearly as much sense to me. I think I was successful in conveying that even though Billy is awkward, lacks confidence, and struggles through his life, none of the characters in the game actively dislike him (except for maybe the bully in the first scene? Nah, he likes Billy too). Most of Billy’s struggles aren’t from people hating him, they’re just a result of him being in an awkward part of his life, and that’s something I think a lot of portrayals of awkward teenagers fail to grasp.
The stupid jokes also seemed to land well so that’s cool too!
As I said before, I consider Billy McMath to be a huge success. So the problems I have with how it turned out are surprisingly few, and I’m the worst there is at being overly self-critical.
I guess the biggest problem with the game is in its core concept, namely that Billy McMath is really little more than a glorified webcomic. There’s nothing to really distinguish it from a well-done Flash animation other than some superficial interactive bits involving quicktime events, and in that sense it almost feels like I’m cheating the system by calling it a game in the first place. If somebody spent the whole time making stellar gameplay that lasts five minutes, is it really fair to pit that against a game driven almost entirely by my abilities as a storyteller?
Also, the Football problem is way too difficult. I’m sorry for that.
Besides the simplicity of the gameplay, the interface also had a couple of nitpicks. The heart system wound up being mostly arbitrary due to there being relatively few opportunities to lose them, and throwing out the word “OK” confused some players who thought they were supposed to do something to confirm their solution. A simple check mark would have served the same purpose without any of the confusion. Whoops.
I also should have spent more time balancing the math problems and bringing in other people to test them. I’m pretty good at math myself and the difficulty of the game seems to be slightly biased towards “soul-crushingly hard”. My sincerest apologies go out to those of you who came to realize their own arithmetical shortcomings as a result of playing my game.
Ultimately, Billy McMath Solves Problems wound up being an extremely silly yet personal story about my own experiences through Middle School, and I couldn’t really ask for it to be anything more than that. I’ve watched people play the game and I feel it successfully conveys all of the humor and emotion that I’d intended, so I’m happy. Honestly, I don’t feel any pressing need to release a proper Post-Compo of this one!
So what’s gonna happen with this world and these characters? Who knows! If there’s enough widespread interest, I’d love to revisit this universe, though that will definitely be a very different game entirely than what this one was. Maybe I can even give Crindy a proper female voice instead of my own terrible impression of Lumpy Space Princess.
That’s all there really is to say about the game! Again, I’m extremely humbled by the overwhelmingly-positive feedback I’ve received so far and I want to thank you for enjoying my game.
If you haven’t already you can now try Ultra Hat Dimension — the premier hat-based puzzle game — more easily than ever. I’ve updated the latest build to automatically work around two crash-on-startup issues the game had. I’ll explain the problems and the solutions in more detail below if you’re interested in learning from my mistakes.
So as well as this being our first Ludum dare we’re also very new to making video games so this jam was a brand new challenge for us! But it’s been a blast playing all the insane games that came from this dare, and its been awesome to read the comments you guys have given us for our game BLODAU.
This is a rad community and we can’t wait until the next jam!! So to show our love I’ve made ya’ll a little gif of our game’s character
‘BABY BORN’ – A POSTMORTEM FOR YOU CAN SHAVE THE BABY
A CHIKUN GAME BY JOSEF AND RYAN
‘You Can Shave The Baby’ is a minigame experience that harks to the time-honoured Warioware minigames with a special dash of bizarre tasks that require the user to suspend their disbelief – and their sanity. The inspiration of the game draws from a series of weird and wonderful in-jokes Josef and I developed, incorporating elements from previous games we have made (all of which are available on our chikun.net website).
If you haven’t played it yet – check it out! Find it here, or on our site at chikun.net.
THE DESIGN PROCESS FOR ‘YOU CAN SHAVE THE BABY’
‘I want to make a weird game’. So we made one. Originally going down the avenue of wanting a hybrid horror-adventure in the vein of Yume Nikki, the project immediately turned into something else at the start of the jam.
The basic coding for the minigame format was fairly simple and self-contained once it was complete. In the vein of making minigames via Warioware: DIY the logic behind the games was easy: it needed,
(1) a timer, countdown and increasing speed,
(2) a win and lose state,
(3) different modes of user input that triggered success in minigames, and
(4) a life and score system to add progress.
After that, development was smooth sailing and the major focus of the programming was to tailor elements (2) and (3) to the unique specifications of each minigame.
As Josef was doing this it was up to me to ascertain the creative direction we wanted to take to give the minigames their personality, whilst retaining the challenge of the game. We made up a list of potential minigames, incorporating a basic description, and the win/loss states of each minigame.
Despite the bizarre nature of the game, many of the concepts revolved around non-sequitur comments, running jokes or references to previous games:
Aphrodite in the ‘disguise’ minigame was a character in Turtle Simulator.
‘Don’t Spook The Bird’ is based on a photo of a sulphur-crested cockatoo I took at a nature reserve and features in reddit.com/r/lovebird.
I wrote a short story called ‘Pizza Pants’ at six in the morning at the Global Game Jam in Sydney. It stands as the only written example of pizza fetishism in literature.
CHALLENGES AND LIMITATIONS –
HOW DO WE IMPROVE THE BABY?
All in all the game came together relatively efficiently, unlike the tension of previous Dares. My only concern during development was that we would not create enough minigames to sustain the interest of players – using the base 30 minigames in a level of WarioWare, I think there was always room to expand.
We came up with few actual challenges during development, but one large roadblock manifested in the last few hours of the Jam – a major storm hit the coast of NSW, Australia, and caused power outages that ended up lasting for a week from that very night. Fortunately, when the power went out on the morning of the last day, most of the work was complete – it was only a matter of uploading the game via phone and praying for electricity.
So what did we learn from making the game? How could we improve the baby game? (1) Develop more varied and innovative game mechanics
Due to time constraints, many of the minigames revolved around either using the arrow keys on the keyboard to steer the direction of an object, or hovering or clicking the cursor to highlight a change in a graphic. Making tattoos, shaving babies, and putting on makeup all rely on the same fundamental mechanic. With more time to develop ideas we could have certainly provided the player with a more engaging and challenging experience.
(2) Actually related to the theme
A common criticism of our game was that it had nothing to do with the theme. This is completely correct – Josef asked me, “Ryan, how does this relate to the theme?” I replied to the effect of who cares. At the end I think I implemented some tenuous intro theme about coming across a hacking weapon in the form of a floppy disk, but the plot was certainly a last minute ass-pull. We made the game for the abstract minigames, and that’s about it.
(3) More animation and graphics for seamless game experience
Though the simplicity of the minigames in WarioWare are simple, there’s a lot going on in the animation department. With more time we could have implemented fades and transitions between the opening cinematics, provided more animations to gague success and failure, and actually provided an ending to give an end goal and thus closure to players after the novelty of the minigames wears off.
Regardless, it’s clear from the feedback we got that people feel ‘You Can Shave The Baby’ was unique in style and memorable. That’s all we could ever ask for.
Hey, everyone! I’ve finally managed to settle in a bit to continue playing your games. I know we had quite the lengthy experience last night, playing a very enjoyable (but lengthy to stream) board game created during Ludum Dare — but we’ll be going back to our regularly-scheduled list now!
I’m going to continue to play in accordance to how people show up in chat via the stream, to give the best personal feedback possible. Just remember that I will be playing all the games on my list regardless, so even if you don’t jump in during a stream, I will continue to play, rate and give feedback to your entry when I’m able to!
Night two and I’ve already got quite a substantial list to work through.
Don’t worry — if you don’t want me to play your game until you’re around, I will keep it on the list until you are! We’re cool about that ’round here.
I also had some curious people watching the stream last night — feel free to pop in and just discuss game development if you wish. It’s totally awesome and completely acceptable to have micro-discussions and the more people other than myself giving feedback , the better. I go over a lot, but I can’t discuss everything! It’s simply not humanly possible. 😀
Soo… I failed this time, and that’s setting my record as 2:1:1 ( Finished : Failed : Not participating). Here’s the online prototype I’ve done (you can only read intro and walk around), below you can read my why I failed.
MathDream was supposed to be a short platformer in which you encounter evil numbers! Your goal would be luring numbers on subtraction mines or throwing addition to clear them, and pick up delicious candies! But… for now you can only read short intro and move around a cloud.
Maybe one day I’ll actually finish prototype.
What actually went wrong:
Ok so… I must admit one thing at first, and I’m somewhat ashamed of myself: I didn’t participated in this Ludum Dare to actually make a game, but to enjoy myself and try to rediscover my programming motivation. So… what went wrong?
I wasn’t interested in doing MVP as much as I was in playing with parts of Phaser I haven’t used yet. You could even say that – at some point – my goal was to simply create timed introduction.
I got over-confident, I mean Phaser is great and allows you to make simple platformer in less than 200 lines of code, so I convinced myself that I could finish MVP in a few hours and let myself to spend WAY too much time on small tweaks like intro timer (at one point I changed values by 10 miliseconds), or re-colouring font. It wasn’t even playing with phaser!
On the last day of compo I went to my friend house (check his great game, I made small cameo apperance there!) and I had to work on my laptop that haven’t been used for months. So I wasted around half of an hour on setting up workspace only to realise that I forgot to take laptop charger so I had to return home for it…
Sometimes I get scared for no reason. When it came to draw that little fella from prototype I found myself thinking “I can’t do this properly, I’m bad at drawing” and it took me about 30 minutes to stop worring and actually start drawing…
Lately I’m too easily distracted by my ex-friend, when I took a walk and encountered her I felt discouraged to continue my work, and ended up wandering aimlessly for nearly 6 hours, and then staring at empty screen for another few…
I failed to check the rules, and as I remembered there was proposal to make compo as long as jam, but with 48h deadline (so you can start day after and still work for 48h) I was certain I still had at least 24h left, so I go to the pub… after all it would be acceptable to work next day if at the first I worked for literally two hours, right? I was stupid.
All in all I spend about 9 hours on Ludum Dare jam mostly doing small unnecessary things.
What I learned:
FINISH MVP FIRST, even if you know it’ll only take a few hours – then enjoy extra time for little tweaks… never ever do the other way only because “finishing MVP won’t take that long”!
Keep your priorities in check, otherwise you’ll find yourself spending more time on intro, than actual gameplay
I actually get a grip on github pages system for project sites (see details on gh-pages),
a lot about phaser state manager and timers,
I draw my first animation!
Keeping laptop enviroment up to date is really helpfull, and if you move while taking part in compo better check twice if you have everything before leaving your house
ALWAYS check compo start and finish time…
A LOT about myself and I think I know how to deal with discouragement and fear more effectively (no more wandering alone to 3 A.M!), maybe someday I’ll share those little tricks at my devblog, but first I want to share some thoughts about phaser state manager.
I hope you’ll all learn from my failure.
Good luck, Guys!
Ludum Dare 32 is over and I survived lol There’s something demented about voluntarily participating in what’s basically “crunch mode” for no reason other than to make something cool but I’m glad I did it. Here’s my post-mortem on how things went and my general design process. First up this is the final result of my 72 hours of slaving away in GameMaker: Studio and Spine:
LDJAM’s topic is announced once the event begins and this jam’s topic was “An Unconventional Weapon”. I decided the 72 hour jam was more my speed over the 48 hour competition because I don’t really care about winning or anything, this is more for me to get my creative mojo kickstarted and possibly come up with a prototype I could turn into a full game down the road so that extra 24 hours to throw in some decent art was too hard to resist. The time limit in general adds a huge doom clock hanging over your head but I know a solid concept is half the battle…there’s no point spending all weekend working on something that wasn’t a good idea to begin with and it’s hard to force creativity so I decided to give myself 2 hours with no pressure to concept ideas up. Even if I came up with a decent idea right off the bat I would keep roughing ideas out till the time was up, so if I couldn’t think of something right away I didn’t freak out since I had a full 2 hours to kill.
I had 3 main goals for Ludum Dare:
1) I wanted one good core mechanic. I’m thinking in iPhone game terms instead of making an epic RPG or something. I wanted an idea that I could theoretically clean up and ship as a simple casual game.
2) I wanted something flashy with a lot of Spine animation because I wanted to really put my GameMaker + Spine workflow to the test since I’ll be using that combo for basically anything I make.
3) I wanted to avoid menus and text because I find doing that stuff in GameMaker is a whole project in itself. It means writing scripts that display and activate buttons and draw and transition menus and lay out text areas, and there’s nothing that easily sets up scrolling menu lists etc. If I made a text/menu heavy game I would spend at least half the 72 hours just trying to get those looking good and working nice. So I wanted as little GUI coding as possible.
These always seem so much smaller when you're working on them
Let’s break it down stage by stage. I started by throwing down any words or ideas vaguely related to the topic:
It's like a word-assosciation improv class for nerds.
Looking back on this list I can actually think of a few cool ideas based off it, so as far as I’m concerned just doing this exercise alone was beneficial. Who knows, some of these concepts might make it into games I make down the road.
I started out with a pretty safe idea…I was going to try some clever meaningful artsy deep outside-the-box take on it. I watched some Let’s Plays of Life is Strange recently so I think I was just in that slow-paced mindset:
Most of these are half-thoughts that made sense in the moment but now I have no idea what they mean lol
It was actually a solid game idea. It would be similar to a Diner Dash game where you micromanage a group which is already a proven mechanic. You’re a villian working as a teacher to distract a class from passing their exams to prevent anyone from being smart enough to thwart your plans down the road. It wouldn’t be too art-heavy either, I would just need to draw a classroom for a background and I could set up a sweet camera angle and hand-draw the characters so it looks like a shot out of an anime:
No idea what anime this is from
It was something I knew I could pull off in 72 hours and fit the theme but it was boring lol And it would either be text/menu heavy or I would have to come up with some icon system that made sense and it would just be a lot of GUI coding. My buddy Derek was like “what? no defending your hot dog stand from ninjas by throwing hot dogs at them?” and I realized that my idea wasn’t really something I would have fun making. A big part of why I’m making my own games is to make whatever I want and I’m a simple guy: I like flashy action and explosions lol
TOSS IT OUT
So I scrapped that idea, threw on a bunch of Sakuga anime compilations (basically the most fast-paced over-the-top action scenes from anime), blasted some high-energy Megaman music and wrote out a bunch of words related to the theme but more action oriented:
ahhhh, this is more like it!
I liked the ideas of “killing enemies gives you a new thing to use”, “merging body parts from enemies to self”, and “stacking effects”. The most natural idea that ame to me would be killing enemies and taking their body parts to attach to yourself, stacking the effects of whatever it is you’re taking from them. Robots/mechs made the most sense because it’s logical that you could replace a robots body parts with other body parts so the concept would be clear from the start. I’m terrible at drawing/designing mechs (I’m more into medieval stuff) so I went with a robot chick as a main character, plus I loved the whole idea of Astroboy as a kid. So I started fleshing that out:
Approximately 3 weapons off this list actually made it into the game lol
I had no idea how much I could do in 72 hours so I put down anything I could think of to help me visualize how things would work. When I got enough down to have a solid idea in my mind I revised it again into something more final to follow:
In theory you could mind-map an entire game out down to every function/script and variable needed.
In this stage I try to group things together and think about what I can re-use code-wise. So I’ll jot down a list of weapons and then break them down into “projectile” and think about what attributes projectiles are going to need to do all of the behaviors I’ve listed. A pistol bullet, machine gun and shotgun blast are all just variations of firing rate, ammo per shot and spread angle. This is actually the part about game design that I enjoy the most, I like breaking big ideas down into smaller efficient chunks. This helps me visualize how a lot of the code will work too. I’m still an amateur programmer and can get lost in my code easily without a good clear overview of what I’ll need.
I really wanted to have her legs switch out for legs that can jump, jump really high, and float/hover in the air, but I knew I should start with her arms and save the legs for if there’s time.
TESTING THE TECH
First up was making a rough Spine file to see 1) if I could get Spine files loading/animating in Game Maker properly and 2) if I could get Bone coordinates off a Spine Skeleton and attach new Skeletons to them that would follow their motion. This was the major tech hurdle for this game idea so I knew if I tackled it first the rest would be smooth sailing and if I couldn’t figure it out I’d have time to switch to a new idea.
First rough idea for a character. Short hair like this would've been way easier to animate but I like a challenge
Fortunately that went silky smooth and I got it working without many problems. So I revamped the character with plans to do her hair and skirt with FFD-animation in Spine. One of the nice things about using Spine is that I can lay out a character and animate her and get her in-game, then go back later and rig up her features for more detailed animation (hair, skirt, facial expressions, adding shading to the art, etc.) and know it’s not going to break anything:
I tend to use 0-length bones so I can attach different angles for bodyparts to them but I regret that on this character, using longer bones would've made animating a lot easier.
In the end I only had time to do her bangs and I used really rough FFD placement so you can see her hair bend with sharp corners in places but the gameplay would be fast-paced enough for no one to notice…or care, because I only had 72 hours lol I had to keep reminding myself that things were “good enough for 72 hours”, no one is expecting to see some AAA product in 72 hours the fact that I had a character animating at ALL was great:
I animated some basic motion and threw her into the game to make sure everything was working and to learn how to do collison. I messed around with Bone compensation (so in Spine I could move her backwards as she dashes back and control the distance/momentum in Spine with her x/y info updating to match in code…this is something I’d want for doing a huge boss that stomps his feet as he walks and pauses with each stomp VS moving at a constant rate of speed), and I managed to pull off a while back when I was doing tests but had way too many problems getting it to work now so I gave up and stuck to animating in code. I’m using TweenGMS to set up tweening and I was able to get a good enough result that way, but I’ll definitely revisit Bone compensation in the future.
The next test was making sure I could turn off the Image Slots and spawn new Skeletons (gibs, weapons flying out of hands, etc.) at specific Bone positions, and, well:
In retrospect this probably makes me look pretty demented lol
No probs there lol The head is a separate bone. I also set it up so that “gibs” could be guns, bones, etc. and spring out at various speeds/angles etc. I’m pretty new to parent/child heirarchy stuff in code but it worked out just like I hoped. The code for this game in general is some of my best, I wish I could rewrite my main project from scratch to make it more like this but I guess you just have to accept that no project will be flawless all the way through. Definitely looking forward to starting my next game after my main project so I can write a bunch of fresh new clean organized code from scratch.
Next up was replacing her arm with a gun and figuring out how to do a nice chain of command up the guns. Each gun has a child gun that attaches to it’s attachment slot and receives commands from its parent. There’s a LOT of potential in this setup, I can have each type of gun animate in a different way and have different attachment slot positions and different length/speed animations for shooting. Originally I was just going to have one gun with a few attachment slots for other guns, but I wanted to test out optimizing my Spine code. On my main project I’m working on I tried implementing Spine but I didn’t really know what I was doing and I was getting a lot of lag with just a few Skeletons. So for this project I wanted to try optimizing things since I had a nice clean empty project to start from where nothing would break.
I did a bunch of digging through the tutorials and trying different things out and the end result was fantastic. I was stacking guns on top of eachother because that was the easiest way to test and at first the game would lag by 30 Skeletons, which really isn’t very much. When I originally tried Spine out I envisioned doing all the art for my games in it, like down to menu animations and bullet effects but no way that’s possible with 30 Skeletons so in my main project I was already planning to use Spine as little as possible.
But after optimizing I had *700* guns attached to eachother with no lag lol:
It's like a giant french-fry of death.
The sight of it made me laugh and I decided to leave the huge stack of guns while I tried to get them to shoot and once I got the entire stack shooting (with a delay too so you can see it flow up the stack one by one) I decided it would be cool to let the Player actually stack like this instead of what I was originally planning. I set up some different guns and timings and the whole thing felt absurd but made me smile so I just kept going with it. But the guns quickly go off the top of the screen so I looked for tutorials on doing zooming cameras that can zoom out to keep two objects in the view at all times and found a great one. I set it up to use the player and the top of their gun stack as the zoom targets so the higher you stack the guns the further out the camera zooms. As far as I know there’s no maximum limit, you can stack till the game crashes lol
Spaghetti missiles, explosions, robots and anime chicks...if there's more to life I can't imagine what it is.
I got cocky and decided to try spaghetti missiles that would home in on targets and leave particle smoke trails…really it would’ve been a more complete game if I had focused on the gameplay at this point instead. I had a lot of ideas for stuff like enhancements you could get that would add fire/electricity/etc. effects to your weapons, which would add a little strategy to the collecting aspect. Or even better, have it detect when you have X number of guns of the same type stacked in a row, so if you stack 3 pistols they glow and fire larger deadlier shot. That would create a mini-game within the game where you would be picking and choosing which guns you wanted to catch, having to make snap judgements as the guns fly up kind of like Tetris. Another idea was to have negative guns that you can accidentally collect, which would be in your stack and fire with the rest of the guns but would do stuff like fire a missile that homes in on you so each time you shoot you also have to dodge a missile from your own gun as a penalty for grabbing that negative gun. I planned to have a huge boss that the camera would have to zoom way out for, like you’d need a big stack of guns to defeat him etc. but ran out of time. Because of all those ideas I think there’s something here that could be expanded on into an interesting game, but I don’t know if I see enough depth in the game to keep going with it.
Anyway so from here I had to grab some music from incompetech.com and whip up sound effects in Bxfr. I threw in some random pitch changing so most of the sound effects will sound slightly different each time you hear them to avoid being too monotonous. The background I left till the last minute and whipped up some quick terrible buildings in Blender and had tons of problems trying to get a scrolling background working right so you’ll see lots of glitches in that but I got it working literally at 8:59pm one minute before the deadline lol It’s glitchy but hey, 72 hours cut me some slack.
Also a bit earlier I spent some time balancing things for the Player. I’m big on not wanting to bog the player down with tutorials, I like when games naturally teach the Player to play. So there are little nuances for ease of playability since most people won’t do more than play for a couple minutes. If you have no weapons you won’t be able to get a missile launcher as your first weapon because the delay on it makes it too difficult to use as a first weapon, you’ll get overpowered too easily unless you really know what you’re doing and even then it’s almost impossible to make a comeback, so I didn’t want the Player to deal with that frustration. You won’t see the robot guys until you have 3 guns attached so you have more of a chance to beat them, and they won’t start attacking you back or changing what height they fly in on until you have a solid stack of like 10 guns. So the game should have a nice easing curve for people to play without a lot of frustration. I love adding these little details to help guide the player into being able to handle the full experience.
I was also originally going to have the Player’s stack build a lot slower, like they just get one gun per enemy but because of a bug the robot enemies were able to get stuck in a “being hit” loop where they would keep spawning out a weapon every time they got hit but as you got more weapons you would hit them more times spawning more weapons which made you hit them more etc. and it became a huge bonanza of guns being tossed in the air like Oprah handing out schools and hump-backed whales. When I fixed the bug I decided to leave the insane gun bonanza in because it added to the absurdity and I figured people would only ever play the game a few times for a couple minutes and then move on so I wanted them to have a memorable little experience in that short window of time.
After watching some people play it, if I was doing this over I would add something that checks how many times the Player dies and if they die 2 or 3 times without collecting many guns, have it spawn a few less enemies to give the Player an easier chance. For a full game the difficulty curve would have to be tweaked a ton but for something like Ludum Dare where people are only going to spend a couple minutes with the game I should have made sure everyone would be able to get to where they stack a bunch of guns and experience the fun part of it.
I’m proud of the end result. I accomplished my goals going into this and with the energy I have these days now that I’ve got my Vitamin D levels handled I was able to power through the whole weekend working non-stop except for sleep and food. The time pressure was fun, it forced me to make fast decisions and throw out things that weren’t working while also plowing forward on ideas that I suspected would work…no time for waffling or second-guessing which can be a big hurdle for gameDevs on longer projects, feature creep and rewriting stuff that doesn’t need to be rewritten etc.
A MOMENT TO GUSH ABOUT GAMEMAKER + SPINE
GameMaker and Spine were AMAZING together. The workflow is so efficient that I was smiling ear to ear as I worked. It takes like 5 clicks to go from animating in Spine to seeing that animation running in-game exactly like I saw it in Spine. For people just getting into gameDev now where this kind of workflow is more common, this might not seem like that big a deal but man, in the old days I would have to do individual frames by hand and then write up text files with a list of coordinates and timings and image names to try to describe to a programmer how the animation should look and then just cross my fingers that they would come up with something that looked in some way sort of like the vision I had for it, which of course it rarely did. It was like dropping your child off at school and picking him up later and he’s all disfigured lol With proper optimization and memory management for Spine files in GameMaker I feel like I can literally make ANYTHING 2d. If I had the time and artistic skill I could practically duplicate Rayman Origins and Ori and the Blind Forest with this combo. If anything doing Ludum Dare and working under a time limit gave me even more of an appreciation for the tools I have access to. I WISH I had these kinds of tools and workflow back when I was a teenager. So if you’re in your teens or early 20s and you’re getting into gameDev consider yourself extremely lucky, you’ve got a huge head start compared to when I was that age.
I’ll be participating in Ludum Dare again in the future, this was all win/win for me. But for now it’s back to my main project. My Ludum Dare game has actually made me more excited to get cracking on this thing. I’ve been avoiding the art side of it because of the laggy Spine issues I was having in GameMaker but now that I understand the optimization stuff I’m looking forward to dumping a ton of sweet art in there. I’m planning full-screen bosses and can’t wait to get crackin’ on them. The menu system is pretty much done, I just have some last tests and cleanup to do with it but then I should be able to get into the fun art stuff. I’ve got the bosses planned out in my head and rough doodles, I just need to refine them into actual designs and start dropping them in the game.
All in all this has been an excellent start to the year. I’m hoping to keep this pace up the rest of the year and participate in Ludum Dare regularly, but one thing at a time…first I gotta’ finish my main project and ship the damn thing lol Follow along at bulletproofoutlaws.com and on Twitter at @BPOutlaws