About josefnpat (twitter: @josefnpat)
Ludum Dare 27
Ludum Dare 26
Ludum Dare 25
Ludum Dare 24
Ludum Dare 23
I will be participating in LD27!
I’ve gotten streaming to work for arch linux, and here’s my warmup;
Dear Ludum Dare developers. For LD25, I will be working in a team, and have written up a message to all the developers on my team. I am posting this here in an effort to document my knowledge, get comments and suggestions on how to improve this document, and perhaps help a few folks out who are having troubles.
You can check out the article here, or follow this link to a much more legible version: http://184.108.40.206/public/ld25.html
My Dear Dev Team
LD25 is getting close, and I want to prepare you for the shit-storm that is about to happen.
Tips for success:
- Read the damn rules. It’s not hard to figure out. We’re doing a Jam compo, which pretty much means just about anything goes. To clear things up, I will post the game on the teams behalf. It’s also especially important to look at what aspects our game will be rated by.
- Be public. Join the luduim dare irc channel. Post screenshots to the site or IRC for feedback. Tweet with the LD hashtag. Post blog posts to ludumdare.com with your own account. Get people excited about our game, so we can get lots of ratings.
- K.I.S.S. Keep it simple stupid. You’ve only got 72 hours, so you need to make them count.
- Sleep well and eat well. If you are well rested and eat well, you will find yourself much more productive, and less prone to introducing crap into your game. If you are tired, either work on something else, or go get some sleep. Take breaks, don’t burn out. If you suck, your code will suck.
- Avoid stepping on toes. If you’re working on a ticket, make sure you’ve marked the ticket to yourself and tell everyone. Try and stay out of the global files, and modularize. The less merging you do, the better off and faster you’ll be.
- Trust your team to do it right. One person shouldn’t be writing all the code. If the code isn’t in your style, clench your teeth and keep going. If you find a bug, report it and make sure the owner of the ticket knows that it’s their responsibility. Always ask for permission to change someones code, and tell them why you want to change it.
- Chill out and have fun. Remember, this is supposed to be a fun learning experience!
Before you even show up:
- Reduce barriers of commutation whenever you’re working. When you’re working, you need to be on mumble unmuted. Since we can’t be in the same room, we need to communicate as much as possible.
- Prepare your toolset. Don’t waste time setting up during the competition. For example, I’m a programmer, artist and sound tech guy ( I wear all the hats ). Here’s my toolset;
- MVP/GDD → Google Docs
- Repo → git-core
- Framework → love 0.8.0
- Code → nano/gedit
- Issue Queue → Bitbucket or Github.
- Art → gedit
- Sound effects → audacity, zoom R16 / SM58 , sfxr
- Music → ZoomR16/SM58/Guitar/Effect Pedals, LSDJ, Audacity
- Know your toolset. Yes, this should be a part of “prepare”, but this is essential, otherwise you’re wasting time. If you plan on coding, you better know what you’re doing. If you haven’t even gone through a tutorial and attempt to commit, I’ll remove your write access. Also ensure you know what the formatting guidelines are. In this case, it’s two space, no tabs.
- Decide out who’s running the show. The jam will be so much easier if you have someone who has the final say. Since I am taking this roll, I will be the person who compromises most.
- Apologize to your friends, family and/or girlfriend. You’re in this for the long haul, and it’s a lot of work, but believe me, it’s worth it. Note: If you have no friends, family or girlfriend, please go pet your cat. If you do not have a cat, get one. Then pet it.
A quick note on the git repo;
/devfor development assets and such that are resized or altered for the actual game. it adds overhead, but it’s nice to have the original assets available to everyone.
/srcfor anything that actually goes into the game.
- Put any build scripts or dev scripts in the root of the repo.
The repository should be set up and ready for everyone to use!
During the jam:
Ok, so you’re ready to jam, #ludumdare has been muted, and ludumdare.com/compo has started crashing due to people raping the F5 button. Finally the /topic is changed, and twitter starts re-tweeting the theme.
First things first
- Brainstorm ideas. Figure out an idea that everyone likes or at least will compromise to.
- Once you have an idea that everyone can work with, brainstorm on the idea. I like to open up a Google Doc, and give everyone write access. Let everyone write what they want, and as much as they want.
- Decide what ideas go into the game. Put them in your issue queue. Break them down as much as you can.
- Decide what goes into the MVP. Decide what it takes to make this game a game, and leave everything else out. Mark those issues appropriately.
- Make sure the team believes they can complete the MVP within the first half of the competition.
The first half
No one should be doing issues not marked for MVP until the MVP is done (unless they can’t do any other issues). Remember, once you have the MVP, you have a game. The first half of the competition ought to be used.
Concentrate on getting the MVP done!
The second half
At this point, what is left is transforming the game into a great game;
- Testing and Bugfixes → Get people to test it! IRC, your friends, your family, anyone! The more issues you can find, the more you can fix before the game gets released.
- Extra Features → Remember those extra features you wanted to put into the MVP, but couldn’t? Do them now.
- Polish → Something doesn’t look right, isn’t fast enough, or could look better? Fix it here.
- Content → Add more stuff. You only have 2 guns? Add 8 more! You only have 3 levels? Double it, triple it, whatever!
- Be sure your packaging system works, you have a good title and blurb, and of course fun screenshots! Thens submit the sucker!
After the jam:
You’ve finished the game and you’re beat, but you’re not done yet.
- Respond to folks who review your game, and review theirs back!
- Ensure the team reviews other games through the account that submitted the game, so the game can get more exposure.
- Tag the release version, and try and close the rest of the game breaking bugs. If you feel so inclined, add more stuff! Just because the jam is over, doesn’t mean the game is done.
- Package your game up and host it!
I intend to be available as much as possible to help keep things in order, but if I’m not there, you guys need to communicate with each other as well. Whoever is there, use your best judgment. Not everyone will have the same schedule.
Tomorrow at midnight is when LD25 starts. If you’re there, you get to help out on the ground floor. The MVP. If you’re not there, you’re going to have to follow the GDD to the letter until we get to the second sprint.
For more, check out the The Game Jam Survival Guide!
I could really use some feedback, so anything you can supply would be awesome!
- Scripted Dialog
- Sound Effects
- Voice Overs
Which is really nice, because it’s very little coding.
Now for some screenshots!
This LD I should be able to spend more time. I hope this post isn’t too spammy, but I need some sleep.
I’ve started with the ground generation.
Here’s a few screenshots:
And here’s a quick board of some ideas I’m planning on working in:
My girlfriend says this is what I would be as a south park character:
Now that I have you distracted by the countless posts on the site, here’s what I expect to use over the course of this weekend;
- Editors : gEdit & nano
- Game Engine: The 2d Lua game engine, LÖVE
- Map Editor: Will probably use Tiled if need be
- OS: Ubuntu 10.04 LTS
- Image Manip: Gimp and maybe Alchemy
- Audio Recording: Zoom R16
- Microphone: SM58
- Sound Effects: bfxr?
- Music: lsdj or guitar
- Mastering: Audacity or Garageband
- Timelapse: gLapse
- Revision control: git
You can also check out my LD23 Entry
I have a bunch of personal libraries that I have been developing in my free time, are not to be consumed by the general public:
I have a bunch of love libs and games on my github. My build scripts and dev environment are also available in the git repo for this LD:
Thanks for All the Fish!
First off, thank you everyone for actually checking out my game. It’s interesting to note that the average number of ratings per entry was ~35. You guys graced me with 55 Ratings, which is awesome. So much love for a game I only spent 13.5 hours on.
A little talk about the ratings I got:
First, I think the “coolness” system is a really great way to get people to hunker down and try games. By rating lots of games, I was able to get a lot of feedback in return, which was amazing.
I’m honestly not surprised my overall score was better than any element in the game. A lot of it was rushed and just “finished” but I’m really glad people understood the potential of the game, even if it was so hard it was practically unplayable.
My “minecraft” approach to the isometric graphics (a billion of just about anything looks awesome) and extra forethought on the GUI system seems to have rewarded me greatly.
I’m surprised this one was as high as it was. This was pretty much a click-fest sim-city RTS. THe mix-genre was enough apparently.
Again, I am surprised this was so high. In my opinion, this game was practically unplayable.
This was probably killed by the lack of story and music. No surprise here.
I was grasping for straws when it came to the theme, so no surprise here either.
No sound == Crap score. No brainer here, but it does make me wonder. If there is no sound does one rate it N/A or 1? Does N/A count against you as 0, or does it just drop from the overall average? What I find even more odd, is that I got 1.1 as an average. ಠ_ಠ Which one of you guys rated the sound >1 when there wasn’t any sound?
Considering the game was so hard to beat to unlock the kitten achievement, I’m not really surprised at how horrible this came out. Regardless, I’m not sure if the game would have really done better in this column with just the achievement.
I hosted everything on mediafire, which gave me some nice statistics:
A quick pie chart of downloads:
The linux downloads isn’t surprising, as the downloads for them came a few days later after the compo was over, but what is surprising is the number of .love downloaded. Perhaps it’s due to the fact that I shared it on the love2d.org forums, but considering everything was nicely packaged, I’m not entirely sure about that.
Anyway, thanks folks! Much love!
What went right:
- Git helped me keep everything in order, and even supplied me with a gource! In a Jam, as opposed to compo, git would have been perfectly, but in retrospect, it’s a little superfluous for a compo. I would still do it, as it is really only a few extra minutes of my time, and gives me something to roll back on if need be.
- Being well rested makes a world of difference. I got three or four more times more done on Sunday when I was well rested than I did on Saturday in only double the time.
- Know your tech – using love (love2d.org) was pure awesome, as I knew the API and I knew Lua.
- Bring your own tech – I prepared for this LD by asking myself, what are libraries that one would normall find in games? These are the ones I used from the ones I brought with.
- Build scripts for all OS’s (This was a blessing. When I was done, all I had to do was run two scripts, and I had the *.love, *.exe and *.app ready to rock and roll). Sure, mine only work on linux, but they output to everything!
- Love Menu: There is nothing more wasteful than re-writing a god damn menu system. I wrote this one a long while back, and have used it multiple times. It looks good, and is fully scriptable. Build one giant view object, and let the library do the rest.
- Bar lib – Again, another common element, this code ended up being a one-liner in my main.lua, but it saved so much time and looked so much better than just a random solid green bar.
- Timelapse yourself. It stops you from screwing around much
- Minimal scope is the best scope. Remember, you can always add more later, but you can’t release a game if it isn’t a game.
- Make sure the art you make can be made quickly, and with high quality – I have recently discovered that I can actually push a lot of awesome pixel art out, as long as I only use two bit graphics (4 colors) So I open up GIMP
- Don’t waste time generating! Making some crap from scratch when you don’t need to is probably a big waste of time! ALl you need is a few cases to make something seem random, why does it actually have to be random? I used this fractal world generator five times, http://donjon.bin.sh/world/ and used that as the map system.
- Forget performance, call it a feature, not a requirement. You won’t believe the shortcuts I took to make this happen, but in the end it goes back to knowing your tech. I wouldn’t have had any of these issues if I had know how to do isometric tiles correctly. Reducing the framerate should have come later.
- Stop bitching, and get working! Seriously, I saw so many people wasting time on IRC bitching about the theme. The themes LD gives are so vauge, you can do just about any thing you want. Oh, folks, stop naming your game “Tiny World” please.
What went wrong:
- Know your tech. Working with isometrics was a god damn horror, and caused 95% of my framerate and mouse issues. Use concepts you are used to. This is not a time to learn new tech, this is a time to produce a game you know how to make. In retrospect, I should have made this game in straight 2d tiles.
- Plan more! I should have planned for another hour or so. I found myself making the game up as I went along, and when I started noticing I was making assets and code that were out of scope, and then later removing them, I had to sit down with my notes again, and decide what the hell I was actually going to do
- Make your machine ready for you. Have your stuff built, make sure it’s up to date, and stable. I had about fifteen minutes to rebuild love 0.8.0 from tag on ubuntu 10.04 (and keep in mind, it doesn’t build if you are running 10.04, so you have to do some hackery)
- Kittens don’t let you code much. They seem to think everything in your monitor is real, and your keyboard is for sitting on.
What this showed me is to participate even if you don’t have time! I did this entire game in 13.5 hours.
Session 1 [ Fri Apr 20 20:56:25 -> Sat Apr 21 02:22:08 ] 5.5 hours
Two hours in:
Figure 1. iso-mine-craft shows it’s sexy side.
At this point I felt pretty proud of myself. I’m two hours in, and have something that #ludiumdare and #love actually like the look of. If there’s anything I learned from minecraft, is that a lot of low res crap makes one big hig-res-low-res thing that looks good. Of course, I’m totally bombing the framerate here.
Five hours in:
Figure 2. I’m starting to realize that this was a bad idea
For the next three hours, I spend the night trying to figure out how the hell to a) make the performance smooth (e.g. only draw the tiles on screen, don’t just test if they’re on the screen) and the math to make the mouse work. I’m getting at best 46 fps (where it should be closer to 1000 in this case). I’m getting discouraged, and decide to go to bed, as I have a friend from California coming in, and a band to try out for that night. I spend the night chilling, playing guitar and smoking shisha with my girlfriend. Obviously I’m not taking this too seriously, but I did plan on using Sunday to finish the LD and make a “game” out of what I have.
Session 2 [ Sun Apr 22 ~13:30:00 -> Sun Apr 22 20:24:06 ] 7 hours
Eight hours in (5.5 left):
Figure 3. Now we’re getting somewhere!
I came back and slept in until 1:30ish on sunday, and started at it again. I decided to use all the shortcut tricks I knew to get the framerate back up, and used some seriously dirty hacks to get the mouse to work (had to get the location during the draw phase, and then hide the mouse to avoid suspicion!). I’m not proud of them, but it beats spending hours trying to figure out the math myself (sorry internet, you weren’t very helpful). At this point I started bashing away at the game, and things moved very quickly. I had four building types, I integrated the health bar, and you couldn’t place buildings on tiles that were too blue or white. Later, because this wasn’t dynamic enough, I wasn’t able to include the cool maps and such, like lava planet and the moon.
Nine hours in (4.5 left):
Hard coding only four items really came back and bit me in the ass, but I knew what I wanted for game play, so it was not worth the effort making the system dynamic. At this point, I have added the territory flag, but I still haven’t gotten the AI in yet.
Twelve hours in (1.5 left):
Now the AI is in, and working at full stupid. Using a bit of math, and tweaking it until the computer made what I wanted it to make, life was born. The computer is faster than crap, and doesn’t really think much, but it’s there, it’s pretty, and it’s hard to beat. I like that. At this point I start integrating the lovemenu library that I have.
Let’s not forget the kitten challenge! I spend the remainder of the time testing the game, and fixing small bugs.
Thirteen hours in (0.5 left):
The game is done, and it’s time to start packaging for distribution. I take pretty screenshots, and shove them into my repo. I run my build scripts and upload the final product up to mediafire. I fill out the information on ludumdare and leave to have burritos at Moe’s. I was unimpressed by my framerate and graphics, sad that I had to include the mouse hack, but still rather proud of my product.
Total: 13.5 hours
I have a bunch of love libs on my github: https://github.com/josefnpat/
The most interesting would be:
And a few games which may have some unique code:
And I also have a bunch of personal libraries that I have been developing in my free time, are not to be consumed by the general public:
- Build scripts for Windows and OS X (linux folk will have to do with *.love)
- Gource script for visualizations
- Small Development Libraries