Posts Tagged ‘LD22’
Since the post about my greatest weakness, I’ve started a new project I thought I would never finish. I just called it “Parkour Project” because the main thing I was trying to implement was climbing and free-running. However, all my story ideas would’ve taken 5 years to implement. (Some stuff about un-corrupting a futuristic city with hovercraft)
So half-way through, I thought I should do the folks down at Ludum Dare some justice, and decided to do Isolated Assault 2. However, that meant I had to make everything from scratch again, because my current “Parkour Project” was using a completely different character set up. It took a long time, but I finished the character controls and improved the enemy AI and sounds.
The demo is now complete (the first 2 levels… I’m working on the others right now)
I’ll explain the rest in the FAQ, but why don’t you read it while the demo is downloading? :3
Will there be music like what we heard in Isolated Assault?
Yes! The traditional looping music track over the entire level is back, but I’ll also be including a new music system that plays certain tracks based on character situation and position. The original Isolated Assault track has been remastered and put into the first level. I will be mixing in orchestra sounding tracks with dubstep tracks (what I’m used to). This has been a fun new experience writing music in a new style, and also it’s interesting mixing in dubstep and orchestra to make one awesome music-packed game!
What’s this whole battle arena about?
The battle arena has changed since the build of the demo (sorry) and is currently under heavy development. I’m adding music, new spawn codes, and enhanced weapons, so be ready for the next demo!
When will the full game be complete?
Well considering I’m only on level 3 right now, and considering there’s going to be more than one chapter and a cool new story to implement… NOT SOON… However, new demo versions will be constantly built and I will constantly keep you guys updated on Ludum Dare and Unity Forums. I’m not actually sure if I should let you see more than the first chapter before it’s done… give me a comment and I’ll see what I can do. Certainly an idea I have is that as I make the levels, I release the demo versions, so you can play it as its being made. (The continue button should work with multiple versions of the game)
Will the final game cost money?
Probably not. Most likely not. If this game gets on Steam (see below) they might recommend I make it cost money. But I don’t really want to do that because I owe you guys something, and making money is not important.
What’s your favorite changes from the original Isolated Assault?
EVERYTHING! Mostly the cinematic scenes though. It’s cool to match music up to voice and animations, so hopefully the taste of cinematics you get in the demo will be extended!
What are the controls and stuff?
Information like that can be found in the README file. (And also the credits)
Thank you all for supporting the original, and thanks for helping make a great LD that got this series started. Yep, I said “series”! I was sort of hoping to get the final version on Steam, but I have no clue what they’re looking for and the submission page looks very… professional. Any ideas? Do you think I should just submit and see what happens?
Anyways, any other questions can be asked in the comments, and be sure to stay tuned for updates!
Thanks Ludum Dare! <3
An expanded version of the little adventure game I made for LD22 just came out on Xbox Indie Games.
I’ve added new areas, puzzles and polish since the original Ludum Dare version, but I’m still amazed at how much of the core gameplay came together in that one weekend. I’m hoping that LD23 will be as productive for me as LD22 was!
Here are a few screenshots from the final version of the game:
I know most people are now focused on the MiniLD, but i just managed to find some time to finish and upload a ModKit for my LD #22 game, She Loves You.
This is one of the two things that i promised but so far never managed to make. The other is a new set of levels, but this needs more time :-P.
To install it simply download She Loves You and the ModKit from the “official” site and Runtime World alpha 3 from its own site. Then follow the instructions the sly-devkit-readme.txt file (which basically boils down to extracting the Runtime World and ModKit files over the She Loves You files). Launch Runtime World and you’ll have the She Loves You textures and entities available to play with. The readme file includes extra information about making maps for She Loves You.
Now, i don’t expect people to actually swarm making maps for the game, but if you do, drop a comment here or in the forum. :-)
This is a really long post about my compo entry for Ludum Dare 22 and something I learned about how I should make games…
After really enjoying the prototype I produced for Ludum Dare 22, I decided to continue develop on the idea. After another month of development, I’m happy to announce that I’ve officially released v1.0 of Atlantic Flight One on Kongregate. You can find it here. I would appreciate any thoughts and/or criticisms. Thanks!
Thanks all who voted and competed along with me! It was fun and exciting to finally join Ludum Dare, and I can’t wait to join again for the 10 year anniversary!
Once again, I’m going to honest (and critical) and try to make this mega-post interesting!
My goals for Ludum Dare 22
- Before the competition started, I had some goals in mind that I wanted to make.
- I wanted to make sure “Fun” was the best category, so that people could replay the game, and have a good time playing.
- I wanted the gameplay to be smooth and the animations smoother.
- I wanted to beat Notch in at least one category (knowing how hard that would be).
What software I used
- Unity 3d Game Engine
- Blender 3D Modeling Software
- Pixlr Photo Editor
- Cfxr Sound Generator
- Unitron Script Editor
- Garageband Music Creator
- Text Edit Text Editor
How I made the game
- I quickly had come up with an idea for each of the most likely themes before LD22 started. My theme for “Alone” was a game where you would be sometimes alone, and then all of a sudden, you would be crowded with people.
- After the theme was announced, I decided that the game would be first person (the easiest of all the persons) and that you would have to fight your way through endless hordes of cubes (the easiest of default shapes). You could only see the cubes when your glasses were on, but if you weren’t in a shaded zone when your glasses were on, you’d start burning. This was a way to keep the player moving, and a way to make them constantly nervous.
- I worked on the player controls and LockCursor, etc. But the gameplay does not complete a game. I needed an enemy. One that would appear only if your glasses were on.
- I whipped up a cube model and texture and soon came up with this:
- Whoo Hoo! Now I have a cube!
- Next I worked on making the cube look at the player, and then having it disappear when the players “glasses” (A semi-transparent plane) were off.
- By now my Unity Scene looked like this:
- Soon I got Health implemented, and then it started to look like a Test level.
- I kept at it, knowing it would soon look like a game.
- The cube could soon move towards the player, and deal damage at close range.
- The first “Shaded Zone” was created, (using a Trigger) and the player would not take damage while inside it.
- I worked on making the zone a little prettier, and expanding the floor plane. I added a skybox, and changed the ambient light to near black.
- The level was extended, the cube had a spawn code and could replicate itself, and the textures for walls and the floor was created in Pixlr.
- I created a variety of sound effects in CFXR like jumping and enemy death noises (my favorite).
- I worked on making an in-game tutorial, by timing when the music starts with the same time that it tells you that there is no one there.
- The menu was easy, all I had to do was come up with a name and choose the font, and soon my game looked legit. (Sorry for the lack of photos here)
- I asked my friend if he could play a test version on his computer (a windows) and I’m glad he did. The font I chose was bugging out on his computer, so I changed it to something else, and it worked fine.
- Now I knew my game was compatible on Windows AND Mac
- I created another music track for the menu, a helicopter to go to as the goal, and a stats screen so you could try to beat your own score.
Rating Other People’s Work
- I specifically rated the games that had the fewest ratings and tried to give most of them a fair, solid score.
- Mostly I gave 3.0s when I thought something was average.
- For a few people that put little effort into it, I had to give some 1.0s.
- I was sad that Notch had not really implemented the theme and pretty much made a different version of Minecraft. (Most likely this was just because he wanted to, or he felt like it.)
How people rated my game
- I can thank my friends, family, and Ludum Dare community for playing the game and enjoying it, especially DontBeNoobish‘s Gameplay Footage:
- I was proud with how my game turned out compared to most of the other entries.
- People mostly liked the audio and innovation of the game, but there were a few things I could’ve made better (More enemies, options, etc)
- Coolness – 52% Bronze medal | At first I thought that the bronze medal meant third place, but then I realized Coolness didn’t have the same rating system. Oh well, it was still good to see that my playing of all those low effort games went to good use!
- # 40 Community – 3.55 | Wow! Community? I didn’t realize I was that popular! I guess this rating makes sense because of all the excited posts I made with links to this game. I did a LOT outside of the game (Time-lapse, post mortem, gameplay video, tips)
- # 108 Innovation – 3.20 | Good, people liked my idea of the sunglasses and whatnot!
- # 113 Mood – 3.20 | I think the music accomplished the overall feel of the game.
- # 118 Audio – 3.00 | Once again, the music, but also the enemy death noises made this count.
- # 113 Theme – 3.33 | Well, you are sometimes alone…
- # 202 Humor – 2.29 | I wasn’t even going for this (other than the ReadMe) so I have no clue how it ended up higher than overall.
- # 323 Graphics – 2.67 | Although mine was one of the few 3D first person games, I guess people didn’t really like the low effort GUI and enemy textures.
- # 435 Overall – 2.50 | Oh no! Overall score seemed like an important one…
- # 487 Fun – 2.06 | Really? This was the category I was focusing on, but yet it got a 2.06! Yes, I guess I did better than almost half of everyone else, and I’m not complaining, but this ended up at the bottom of the list, when I had worked for it to be the top.
Comparison To Notch
- My goal was to beat Notch in at least one category, and it turns out that was too easy:
- I ended up beating Notch in 7 different categories!
- A comment on the community rating: Last LD, Notch won third place (if I recall correctly) in the community category, but now he received a #49! And I received a #40! So after all the years Notch has spent on Ludum Dare and Minecraft, and the entire fan-base he collected from the Top Computer Game Of 2011, I was able to receive a better score than him from 3 weeks of posting on Ludum Dare!
I send out a huge thank you to all who rated my game (yes, even those of you that got me that horrible “Fun” score) and hope to join again for LD 23! Please remember Rob Productions again for next Ludum Dare, and you can expect a post-compo version coming in time!
Guess I’ve procrastinated long enough, here are my thoughts on my LD#22 entry Moving Day.
These are probably pretty typical stats for games that don’t generate much buzz during the rating period. I tracked my clicks using bit.ly and so far the source code has only been downloaded 6 times, total game clicks of 111 and total timelapse views of 144.
I also posted a link to facebook late at night, but that link saw very little traffic. I’m guessing it got buried in the flood of posts and most people saw it in the morning when they couldn’t play a flash game. I don’t think my social network made much of an impact on the statistics… it would be better to post such things just as work is letting out in your target location. The demographics were also interesting, you can see how this is really a global community:
What went right
- I’m pretty pleased with my tool selections. FlashDevelop + Flixel has been fun to learn and I was able to come up to speed fairly quickly.
- Inkscape saved the day for graphics as I quickly realized that I lacked the skills to make decent animated frames with pixel art. I’m pretty satisfied with my run animations.
- Recording a timelapse was actually pretty helpful for me. When you get into the zone it is easy to lose track of time, the timelapse helped show me that the time I spent browsing was really pretty trivial when compared to the time I spent prematurely tweaking gameplay.
What went wrong
- I spent too much time tweaking gameplay before implementing randomized game levels. I usually get stuck obsessing over gameplay in my other prototypes and I’m glad that Ludum Dare forced me to go beyond that but I still wasted way too much time here.
- The innovative part of my game was supposed to be a physics-based gliding system that let you trade speed for jump height. I spent many hours tweaking these equations with a static game level and that work was basically wasted once I replaced the static level with randomized one.
- Animating the death scene was also pretty tedious. I should have learned how to use a tweening engine before the compo.
- Last minute bugs. I ran into a randomized null pointer error in the last hour of development… which was solved with a comically stupid hack: while(x==null) x = randomobject();
Next time around I’ll make sure to implement basic gameplay, levels and a win/loss condition before spending time tweaking any specific parts.
[My name is Carlos Leituga and I’m a junior Game Designer / Implementer in a Portuguese company, where I’m working on a Hidden Object Adventure for a year and a half now. So here I am again, creating a game in 72 hours with the Make A Game team for Ludum Dare #22. ]
As we were packing our stuff after making Eggscape, someone said something in the lines of “Let’s do this again in December!”, and since that day in August we’ve been talking about participating once more in Ludum Dare.
As the final week till LD #22 began, we followed the theme voting closely, coordinated our votes and shared the possibilities of each theme that interested us. Having learnt a lot with LD #21, we were confident that this time everything would work out better, even with two fewer members.
We are happy to announce that our little LD 22 game - Alone in the Crane – was published to Android Market and App Store!
So now you can try:
- Android version
- iOS version (for iPhone, iPod and iPad)
- Windows version
- Mac version
and Online version
And here we have some iTunes promocodes for iOS version for you:
It’s been a while since the coding portion of the compo, but I think that this will give me a better perspective on the overall picture from the weekend, rather than focusing on the details of it.
My game is“Alone In Space”
Last time (LD21) I did an iOS game. In the process, I spent a lot of time on just the boilerplate to get it working, and then the final product was only playable by people who had the iOS SDK. or a week later by only people with iOS devices.
The timelapse for this one covers the overall flow of creation, as well as the order that I made things.
Alone In Space — Timelapse
What went right
This time around, I decided to focus on game physics/feel before entirely fleshing things out. I think this worked out well for me, because it meant that I would end up testing the physics every time I tried out a new feature I had added; giving me time to hone it a bit more, making it more fun and playable.
After doing a mini compo with some friends; creating a clone of “Asteroids”, I realized a few important things, which I believe I got right this time around. First of all, I got ship physics that “feel” good. The ship has a nice bounce and pep to it that makes it more fun to play. Secondly,
The design of the ship was originally going to be more like this: But due to limitations, it ended up the way you see it. It was only then that I realized that with a very little bit of tweaking, it would look like a kitty. So I went with that. Blue Cat Ship!
This was my first time using an image file as a “map”. Once I got the first one in, it was trivial (sort-of — see below) to add more levels, just by drawing them up in a paint program. It made it very easy to add location-based features to the levels. A+++ WILL DO AGAIN!
I originally wasn’t going to display the map on the board, but after having it up for debugging, and my wife mentioning that it would make it more fun, I left it on there, just tweaking the display a little, to be more “finished” and less “debuggy” ;
I really like the way my “lightning” effect looks. The quick solution on how to accomplish it was spot-on, but my effort was clumsy. (see below)
What went wrong
I wish I had more time for level creation, or at least didn’t have to futz with multiple paint tools to figure out one which would work. I just assumed that Pixelmator would work fine for me, but it was too cumbersome to use for this project. I fell back on Grafx2, which I’d never used before, after Deluxe Paint failed me. Now, i’ve set up Deluxe Paint 3 for MS-DOS in a Boxer/DOs Box, so that’s ready to go for next time.
3 levels i think gives you a good idea about how it works, but isn’t really a “complete” game… whatever that means
As always, I could have used more time for balance. I knew that I wanted to have 3 gauges; red, green, and blue… I’m sure I could have worked out some other concept other than “food” and the way it affects the other two is… weird. I admit, that wasn’t thought out very well.
The Processing IDE is good, but once you get a lot of tags, it gets in your way more than it helps. I think I should have put similar classes all in one .pde file each, rather than one .pde file per class. The software engineer in me wants to have them separate, but the HCI designer in me wants them joined. heh.
Lightning. I spent a stupid amount of time to get the lightning working. I think this was mostly stubbornness on my part. I knew a way to make it work, but I just kept on having misstep after misstep… and after a while, I had devoted so much time to it, I HAD TO finish something just so that the time wasn’t wasted. I ended up coming up with an implementation that I think looks pretty cool.
In all, I think I did pretty well this time, considering time restrictions (helping care for a 2 year old, other family stuff). I’m happy with the accomplishment, and happy with the game as it is.
Alright! Finally got around to doing this post. This is going to an extended look back at the development process of One of a Kind, which you can download, play, and rate here. It’s going to be a lot of walls of text, so if you want the shorter, regular port-mortem with “what went wrong vs what went right”, you can instead read this post.
That said, onto walls of text!
For my entry I made a little point-and-click adventure game without the clicking. If you haven’t already, you can play it here.
What went right:
Music – going into this I was fairly certain that I would be using some sort of chiptunes generator, but when the theme “Alone” was announced I figured there was no way I would get a chiptunes to work with the mood of being alone. I had given up on music within the first hour of production, but at the end of Saturday I got a little tune in my head, nothing fancy but it just might work. Sunday morning I got out a guitar and found a microphone and started recording just to see if I could make something. What I ended up with may not be fancy, but I like it and I think it is definitely better than silence. Though, since I went with live music I don’t think I should have used sfxr to generate sound effects, I think they kind of clash.
“Just do it” Attitude – When the theme was announced, I was at a loss for ideas. Fearing I would just give up if I didn’t do something, I started drawing a little sprite protagonist. After seeing him walk around I thought “he needs to be crushed by a tree.” The act of starting something allowed other ideas to flow and created a game for me, all I had to do was finish it.
What went wrong:
“Just do it” Attitude – By just starting right away without a plan, towards the end I had to start hacking things together in order to make them fit. Not having a plan before hand meant that I didn’t realize just how many assets I had to draw (as you will see, I’m terrible at drawing assets). And the code it cobbled together and held there with duct tape. I found myself writing the same thing over and over because the base class wasn’t created properly because I didn’t really know what it was going to be used for. Had I started with a decent plan I might have saved enough time to put in a small tutorial.
Theme – I was all prepared to create a tile based platformer and was hoping the theme would present a neat mechanic that could be used in the game. But when “Alone” was announced, all that went out the window. I was at a complete loss for ideas and nearly gave up right there. I actually wrote down several ideas for the themes from round five, but “Alone” was one of two that I couldn’t come up with a decent idea for. In the end, all I had was the vague idea “environment for the enemy” and I tried to make the best out of it.
Lack of instructions – If you watch the timelapse you may be able to see that there was an “Instructions” field in the main menu all the way up until about an hour before the end of the contest. I had intended to include just one screen explaining what type of game this is, what types of interactions the player has with the world, what clickable objects look like, and a hint to where to find the kitten. In retrospect, this really shouldn’t have been cut because without prior knowledge it isn’t obvious at all what the player can and can’t do.
Take time to make a plan – I think next time I will dedicate the first hour to planning out what I’m going to do
Have completed basecode – There were still many things missing from my base code, like collision detection and a way to do fade outs. I didn’t want to look up anything while in the contest as it would waste time, so I made due with what I knew how to do at the moment (and that is why screen transitions are screen wipes).
Be strict about friends/family not bothering me – In the middle of Sunday I was called away by my family by what I expected to only be an hour which turned into five. Whenever I look at this game now I think what I could have done with those five hours.
All in all I learned a lot from the LD22 weekend and look forward to participating again. And please, if you haven’t, could you play and rate my game.
I would like to start a list of Entires into the Comp/Jam that use the XNA framework:
I have only checked the first fifty odd on of my list, please add a link to your submission to the comments and I’ll update this list daily!
Update: This list now has 62 entries, is mostly complete and has been sorted to allow easier navigation.
I have created this list in the hope that we XNA developers will be able to sample each others games and provide much needed and valuable feedback to each other.
Edit: I also put up the soundtrack if anyone wants to check it out!
What Went Right:
I was able to plan out most of my time pretty well, so thankfully I was able to implement nearly all of the features I wanted, with just a few minor ones going undone. I spent about 5-6 hours on audio, probably roughly the same on graphics, and the rest coding, which is about what I expected (and planned) going into the weekend.
I was already pretty experienced in making this style of music (and making music in general, which I’ve been doing since 2004) so it wasn’t too horrible of a prospect to make a bunch of game tracks in a short amount of time. Having done a whole ton of album-a-days (http://crapart.spacebar.org/aad) helped on that front too – thanks Tom 7! Trying to come up with a variety of original material was probably the most creatively difficult aspect of the whole weekend but I’m really happy with how the music came out. And of course, working with bfxr was a pleasure.
What Went Wrong:
Game Balance/Playing My Own Game
I think the biggest issue with the game as it stands is the balance or difficulty – depending on how you play it, it’s probably either way too easy or way too hard. This wasn’t really obvious to me until around Sunday when I little else to do but play my own game and do lots of polish. It’s kind of funny to think that I didn’t spend enough time playing my own game in a 48-hour game dev competition, but it actually makes sense, especially considering the sort of game I was going for. I’ll try to keep this one at the forefront when I do my next Ludum Dare.
Slight Unfamiliarity with Tools
This wasn’t too much of an issue, but I had to look up a few XNA-related things to implement certain features, particularly graphics-related ones. I also struggled with GIMP a bit, which is probably understandable to anyone who has ever used it.
All in all this was an awesome experience. Can’t wait for the next challenge!
For those that get stuck, can’t play the game, or just don’t have the patience to experiment… I’ve created a game guide / mini walkthrough for my Ludum Dare 22 game, Ab-Alone.
You can check it out and rate the game HERE.
I’m also working on compiling a list of some of my favorite LD22 games for a future post.
Due to the fantastic packaging advice post now stickied to the page, I created a web applet wrapper for my game so that it could be played in browser, for those who don’t want downloads cluttering up their desktop.
I tested it in Chrome and in Firefox, please let me know if another browser is having trouble.
It is a little buggy because it is just a wrapper and is still trying to process the executable code, had I had this in mind from the start I could have segmented it better. Something to keep in mind for the next one.
Blurry, stupidly sped up, and crazy alt tabbing so you can’t see anything. Enjoy.
This is the time lapse of the full 48 hours of development, trimmed slightly so you don’t have to wait 30 seconds while I’m sleeping.
I like the concept of a timelapse, it makes it look like I know what I’m doing when I code something, as opposed to making it up as I go.
And again, if you could please play and rate my game, as well as leave any constructive criticisms, that would be greatly appreciated. Thanks
The last man on Earth sat alone in a room. There was a knock on the door…
When I heard Alone was chosen as the theme, a set of bizarre ideas immediately appeared in my mind. I really wanted to explore about the feeling of being alone, about the psychological effect of it. Also, I had read The Knock recently so I wanted to explore more about that subject.
The tools I used included:
- Adobe Photoshop
- Adobe Lightroom
- Adobe Flash
- Flashdevelop / ActionScript 3
- as3sfxr »
- Aviary »
- A standard Digital Camera
- Some burned papers
- A friend (lol)
The art is rather simple, I took some photos of my house and I asked a friend to model for me. We did some shots of him walking, but because I lack equipment (tripod, marks, etc) the result looks a little bad. I did my best to correct the photos in Photoshop. The room is a part of my house, that isn’t even a room, but I couldn’t take a picture of a real room because the camera angle was too short. I applied Exposure and Posterize to all the images.
The programming was done entirely in ActionScript 3, using some features of my own library, but the vast majority was to be made from scratch. I used Flashdevelop because I’m really fast with it… Just press Ctrl+Shift+1 and it’s like magic!
I think I’ll work more time on this game. I’ll add more puzzles, make an easy mode, add language support, and maybe more rooms to explore, or explore more about the story. For example, what happened upstairs?
This was my second time on Ludum Dare, and I think it was a really good experience. I don’t think there’s something that went wrong, maybe next time I’ll add more features to my framework, like effects, sound support and embedding support; but at the end I managed to do what I intended to do.
Developers often do a “Post-Mortem” after completing a project, exploring the things that went right and wrong. This helps them keep track of what they’ve learned and also help other people who are going to try the same thing.
What went right
“Alone” is really a mood theme, rather than a mechanics one, and that had me a bit stumped at first. All the neat “physics” and “sim” ideas I had in my head needed to be thrown out. The gameplay was to be a slave to the story, which is pretty much the inverse of how I usually think.
Right from the beginning, I had toyed with the idea that the protagonist is not literally alone — just that he feels alone. Paper Town takes that the next level and places the player in the mind of someone who is psychologically damaged and is living in a world where he perceives himself to be alone and can’t recognize the presence of people around him who are trying to help.
I believe it’s an idea that can resonate with a lot of people. You may feel lonely, but at the same time you pull away from other people and avoid talking to strangers. This explores the extreme outcome of that: The character will in one line of dialog lament the fact that everyone has left him, but in another line of dialog scream “LEAVE ME ALONE” to the nebulous entities that sometimes appear.
It’s through the development of the story via note pickups that the character finally gets a chance to recognize that his solitary universe is self-inflicted and that he can break out of it through a true desire to be with other people.
For a lot of people, the spirit of Ludum Dare is to build everything from scratch — or as much as is possible without implementing your own programming language and basic library of functions. However, I very much wanted to build a complete game and starting with a fully functional gaming engine went a long way towards ensuring that. Being able to drop in primitives and start programming behaviour 5 minutes after deciding on an outline for my game was incredible. Not having to worry about how to load images and sound, nor do physics, was likewise amazing. Also, having access to some great pathfinding middleware was also exceptionally helpful, though it brought its own problems (see below).
On the other hand, since my challenge wouldn’t be about the base engine, it means that I had to make certain that my execution of the theme was top notch. I wanted to tell a complete story, and I wanted to make sure that there was a way to win and to lose the game. I think it takes about 10 minutes to win.
I didn’t have the time or the ability to do any 3d modelling, but I did as much as I could using pure primitives (cubes, planes, spheres, and capsules). I’m also pretty keen on my moody lighting effects.
While there are certainly things I would have liked to have gotten done if I had more time, I actually didn’t feel very rushed during the 48 hours, and I think a lot of it had to do with having a solid time plan right from the beginning.
The theme announcement and start of the competition was at 9:00 PM my time on a Friday, so that evening was all about coming up with the idea for the gameplay and story, and to setup the initial environment in Unity (terrain, character, a simple building, and the ability for the player to click/pathfind around the obstacle).
Saturday was planned to be “gameplay” day. I generally didn’t worry about the actual looks/art. The game just had to be playable, and by the end of the day all the major gameplay features were present:
- Randomly generated city, including 4 types of buildings, streets with intersections, lightposts with actual lights
- Enemies that would spawn, patrol around, and chase the player if they saw him — dealing damage if they got close.
- Pickups for the player, which would be stored in inventory
- The ability to create a “paper doll” with the right items. A “paper doll” is a turret that shoot bullets at enemies.
Sunday was planned to be “story development”. I know it may seem weird to play on having 50% of your time to do all the “real” features and 50% of the time to do “fluff” and polish, but in practice the big features don’t take that much time. They’re often far more straightforward and easier to understand. It’s the fine-tuning that can be really time-consuming, but it’s also the thing that truly sells your product in the end.
I think my final story is a bit cliche and maudlin, but still works to really sell the theme. This time allocation meant that I was also comfortable spending time making sounds and intro/end screens, which I think are an important part of the “complete” package but often get overlooked in the face of adding more gameplay features.
Things I did on the final day:
- Redid city generation (it was crap and the road/fence were very crap)
- A dialog system, allowing the story to be told during gameplay (and also to explain gameplay mechanics as they come up)
- Added a new pickup type: Notes. These are used for the victory condition and also trigger lots of dialog.
- Changed player to WSAD/Mouse movement
- Fiddled with the pathfinding multiple times
- Rebalanced the enemies and pickups multiple times
- Added a day/night cycle, which looks good and controls enemy spawning
- Intro screen!
- Win and loss screens!
- Sound effects!
Food and Drinks
Lots of good, satisfying food at my disposal. No junk food, and nothing that would leave me with messy fingers. Also, everything could be prepared in just a few minutes, minimizing downtime.
- Bacon and Eggs
- Avocado with Sriracha hot sauce (sooooo goood)
- Tuna salad
- Leftover ground beef/veggie casserole
Note that these are low-carb, high fat foods that fit into my Keto diet. If someone on a standard diet ate like this for 48 hours, they’d probably feel a bit foggy-headed, which wouldn’t be ideal for the competition.
This was by far the single best choice I made with regards to Ludum Dare. Having hundreds of people watching me all weekend kept me motivated and entertained and provided me with a veritable army of beta-testers! I had to create all the game code and content myself, but having people provide immediate feedback was invaluable.
Many Ludum Dare games don’t have any sound, or at best just include a few bloops and bleeps generated with a tool like BFXR – which was absolutely my plan too. However, in practice I really wasn’t happy with these sounds. I felt like their arcadiness took away from the mood of the game, and I’d just about given up on the sound (which was already an Final Hour job)…but my stream viewers made a case for the importance of sound and music. And I’m happy they did!
So I went to Plan B for sound, which was simply to use my microphone. Sound effects for item pickups came from flipping pages in a book (Python & XML in a Nutshell), and music came from something I’ve never done before: Me playing an instrument in front of an audience. I played a few bars of some badly off-tempo blues scale on my harmonica and then slowed down the recording (which also lowered the pitch). The result is a haunting soundtrack (with two songs) that – while far from good – is way better than no sound at all.
What went wrong
One of the resources that was in my toolbox even before the theme was announced was the great A* Pathfinding middleware by Aron Granberg. It’s a very simple drop-in solution that makes it pretty easy to add basic pathfinding to a project. I like to use it by attaching an empty “pathfinding target” gameobject to my units and just moving that target around to make things happen.
Unfortunately, I ran into some limitations with the default way of using the middleware that caused to pretty serious problems and almost wrecked my whole idea. I wanted a fairly large city for the player to explore, but the combination of a large area with the need for a fairly fine pathfinding grid (to be able to maneuver around furniture around buildings) meant that we were generating far too many nodes and Unity would crash. After some fiddling, I was able to find a compromise between city size (3×3 blocks with 2×3 buildings each, for a total of 54 buildings) and grid resolution. At that point, things seemed to work pretty well until I started balancing the game.
It quickly became apparent that I needed quite a few enemies to appropriately populate my relatively large city space, but as I increased the number of units my pathfinding system started to lag. Luckily it’s pretty intelligently designed, so the actual game performance was unhindered, but the pathfinding request queue was taking longer and longer to get through. This wasn’t necessarily a problem for the AI, since it’s not the end of the world if it takes them half a second to change to a new path in response to stimulus (it just makes them a tad easier to juke).
For the player’s mouse-controls, however, it was a big problem.
One of the first things I added to the game was a click-to-move functionality. Reasons for this were varied, but a big part of it was a drive for simplicity. I wanted a game that was utterly intuitive for anyone to play.
My initial approach was to do a raycast from the screen to the ground when the mouse was clicked, which worked great. Unfortunately, Unity doesn’t provide a simple way to eat mouseclicks when the player hits the GUI, so interacting with it meant the player was moving unintentionally.
The second approach was to have the ground react to OnMouseClick events, which worked just as well but wouldn’t be triggered when the user was clicking on the UI. Unfortunately, it also does not trigger if the user is clicking on another model, including my road segments and building floors, so I had to ensure that my “HandleMouseClick” behaviour existed on all relevant objects, including pickups. This worked okay. Until I ran into my pathfinding issues.
During the day, everything was pretty good (minus a little funniness due to the pathfinding grid resolution), but at night when enemies showed up, there was a noticeable delay when clicking due to the pathfinding queue being pretty full.
In the end, I gave up on mouse controls and switched to WASD/Arrow controls, leaving the player feeling very responsive.
I’d decided pretty early on to make the building outer walls quite low, that way the player could easily click on the ground inside and also not worry about the player being hidden behind a wall (due to my fixed camera angle). This lead to me having to fiddle a bit with my line-of-sight tests with enemies, because they shouldn’t see the player through a wall. I had to make sure that my raycast was low enough to be blocked by the short walls, but high enough to not get screwed up by the lip around the road or the strange mesh deformity on the player’s capsule model. It ended up being kind of fiddly.
It would have been nice to put an invisible wall around the buildings and have them block enemy LOS rays, but between the UI, the “shade” block inside the buildings, and the invisible walls I couldn’t figure out a way to allow mouse-click raycasts to get through while blocking enemy raycasts.
Of course, that was all moot by my switch to WASD/Arrow movement, but that change happened way too late in development to save me any trouble with the enemies.
Randomly generated content
This always SOUNDS so cool, but for a game like this I’m not sure it does anything for the gameplay, nor am I sure that it saved me any time. Yes, placing individual buildings would have been a pain, but I spent so long having to tweak the system so that the buildings and roads all ended up in the correct location that I think it took longer than doing it manually would have. And it’s still not perfect! There’s slightly more space on one side of the blocks than on the other.
Even things like Pickup spawns were totally random at first, but sometimes pickups would land on top of objects and be inaccessible to the player. Ultimately, I placed empty gameobjects to act as spawn points and that worked so much better (I also did this with enemies).
So if I *did* want randomized buildings, without having to worry about getting my placement math right, I should have manually positioned building placeholders and just have them be populated at program start.
Note that I had intended to make my city bigger (which is why I felt that random generation was the way to go), but I had to scale down my plans due to pathfinding contraints. I do think my final city is a good size for the actual game.
The idea that the protagonist has devolved to making paper dolls in order to combat his loneliness came about very early and was meant to be a major part of the gameplay, adding in a “tower defense” component. However, this never came to be and as a result the act of creating the paper dolls and their use in gameplay is rather secondary. It’s still better than not having them at all (and having the game just be about exploration and hiding), but I think more could have been done with them.
To a certain extent, the weakness of the doll theme is a result of the time limitations with regards to creating more enemy types and behaviours and just general game balance. I also think that the dolls are dependent on a certain amount of art development — I think they deserve a cutscene for their creation, to add real emotional depth.
Another contributing factor to not further developing the paper dolls idea was the conflict between static, unmoving, tower-defensive gameplay and the need to explore to find notes to advance the story (and win the game). Making the dolls secondary (and have very limited ammo) turned them into something that was just a tool to help you survive a bit longer and facilitate your exploration (and thus completion of the story).
I consider this project to have been a HUGE SUCCESS! I program all the time, but usually I’m making business-oriented web applications. I have started many games, but I’ve never finished one before. Paper Town may be rough, but it is a complete game and that makes me extremely happy.
Also, even if the game hadn’t worked out, we still had a stream that averaged 100 people for an entire weekend. That’s amazing!
I absolutely hope that I can participate in the next Ludum Dare, but I also hope that I can find more time to make games in general.