Posts Tagged ‘flashpunk’
Happy New Year, folks!
I thought it’s time to write a postmortem too. For those who haven’t seen my game yet, you can find it by clicking on one of these conveniently placed handcrafted icons:
And now without further ado, here we go:
Some things went wrong
Yup, I’ll make that the first section. I think the game turned out pretty well all in all, so I’ll let the best come last!
Not everything went right though. First and foremost: It took me hours and hours to get motivated. Motivation is my biggest problem when I work alone. I’m not too good with game design, and often I don’t see if a game can be great before it becomes great – which seldom happens in the first few hours. There are many moments on the first day where I wanted to give up. What helped me was to remember that I’ve felt this way before with other projects and they turned out great! And now I have another one of those.
What didn’t help either is that I have no definitive base code library, I extracted my base code from another project and had to delete stuff that doesn’t fit. And then post it here. It takes time, and I don’t feel too good about it as it goes a bit against the Ludum Dare spirit. I’ll take care of that soon and will have one for the next LD!
Unsurprisingly, the clock wasn’t kind to me. Two of the levels were created in 10 minutes before the deadline. The first level is my “easy” test level, and the fourth level is my “hard” test level. I didn’t even have time to test the two in between. The third level works quite well, the second is awful but at least it’s beatable in about 1 1/2 minutes…
The music doesn’t sound stealthy at all. I am no musician, so this is no surprise. I’m not sure if I want to put enough energy in this to get better just for the LDs, so I guess I’ll just have to deal with that. I should have added an option to turn it off though.
Some things went right
Probably the most important thing: I wrote a to-do list before I started. This is so incredibly helpful and I hope all of you are doing it. For those who are not, here are the benefits of doing it:
- You think about the code design along the way. It’s not as exhausting, restricting and time intensive as doing a full-blown software design and it still gives you a general sense of what you need.
- You can always look how much you still have to do and how you’re doing progress-wise.
- Most importantly: It keeps you from digressing. At least that’s what it does for me – every time I feel like I’m lacking clear directions, I check my to-do list. Works without fail.
I had a level editor at hand. Mind you, it’s nothing fancy – it couldn’t be easier actually:
Yup, it’s just TextPad – with an XML file, shown with a slightly modified version of the Laser Systems font. It’s dead easy to parse. I’ll surly have something fancier in the future when I’m more established with games that actually need an editor, but for now its service was perfect.
It was 10 hours before the deadline. There was no time to be wasted. Yet I was idle browsing the FlashPunk forum without anything specific to look for. And guess what I found: TileLighting [1.0.1], made 6 days before the Ludum Dare. On an impulse, I spent 2 hours to integrate it. Here is the result:
Is there are lesson to be learned from that? I have no idea. All I know is that it made the game SO much better – it basically gave the game one of its major mechanics.
Speaking of major mechanics, I was 8 hours before the deadline and I had to decide which single feature on my huge to do list I wanted to implement – all others were to be discarded. I decided on lock-picking, and it turned out great. After the light became such an essential tool in the game, I decided to link the lock-picking to the lighting level – just how it would be the case in real life: The more light you have, the easier it is to do something hard. This feature received the most praise in the comments which makes me pretty happy!
Another important thing was that I focused on what I can do best: Gameplay. I could’ve spent more time on the graphics, but then it still wouldn’t look good and be much less fun. I think the abstract graphics are working well for the time being.
Another good thing was that I inserted sound effects and music. They might not sound as well as in other games where the developers actually know what they are doing, but it’s still a vast improvement to silence! I think I did both in 1 1/2 hours. With 48 hours in total, there is no excuse not to add them.
Here’s one more on gameplay: Enemies don’t have to be intelligent, they just have to work and be fun. I thought about implementing pathfinding, but took a far easier route in the end and I fare just as well:
- Enemies just patrol a straight line.
- When they hit a wall, they go left or right.
- When they scrape a wall and find an opening, sometimes they enter it.
- An enemy that spots a player goes to where he saw him last, then follows the player’s trail a few seconds:
And yup, that’s it. Just going straight for a point, then following a trail the player leaves. It’s was rather easy to make and is a lot of fun to play against!
I have no idea how much impact the fact that I made a gameplay video had, but I think it was a pretty good idea. It can give people a sense of the game if they don’t have enough time or incentive to play it and it can provide basic instructions for those who don’t like to read and can’t figure it out by just playing. It’s not hard to make, it doesn’t take much time and you can do it after the deadline: You should definitely make one too!
Some things were learned
A few lessons learned/tips:
- Don’t like the theme? Neither did I. Deal with it! You can still make a fun game. It’s not like you have to design your whole game around it. Sure, that would be cool – but having a game that will get 1/5 in the Theme rating is still better than having no game at all because you gave up before you even started.
- Keep calm and carry on: Never give up while there is still time! Maybe the game isn’t great now and you don’t have any idea how to improve it, but if you carry on, inspiration will hit.
- A to-do list helps to keep you on track. It also helps with the design. And tells you were you stand progress-wise. Write one before you start developing.
- Focus on what you do best. For me that’s gameplay, and that’s why my game isn’t as pretty to look at as other games, but it’s a lot of fun.
- Add sound effects and music. Even if you’re not good at it, I guarantee that your game will feel FAR better with them, and with good tools, it won’t take you long to make and insert it either. (In case of doubt, just add an option to turn off the music.)
- Sleep. Yeah, 48 hours isn’t much time, but if you’re fresh you work better. And who knows what kind of ideas you get when you’ll get your subconscious some time to rest?
- Music for Programming is pretty cool. Especially when you’re having a hard time concentrating.
Some features were discarded
Are you interested in what I wanted to implement, but ran out of time to do? Here is a quick breakdown:
- Level / Gameplay
- Treasure makes you slower
- Treasure: Weight (can only carry certain amount)
- Step-on mines
- Alarm Level
- Enemies shoot
- Vanishing / Hidden after time
I don’t want to elaborate on these, just give a quick impression, but it’s such a pity that some of them are missing! I wanted to have lasers as obstacles, maybe switching on and off, traps to force you to have a higher light level (and maybe a trap disarming mini game), an alarm level slowly escalating difficulty when you’re seen, enemies shooting at you, and my favourite: Dynamite to break walls, but alerting every guard even if they can’t see you.
But well, you can only do so much in 48 hours. All in all, I’m pretty happy with the result. It’s a very good feeling I did that all on my own, and I am glad I participated!
Some thanks are offered
Thanks to the Ludum Dare organizers and to the great, great community! You guys have made a wonderful thing here and are doing all of this in your free time and it is so much appreciated! I cannot believe how many games were made, and how many kind comments I got on my game – I’ve seldom experienced such a friendly community. I had a great time and I will definitely participate again!
Do you have any questions I didn’t elaborate on? I’ll happily answer them in the comments! And you could leave a little comment if you enjoyed reading this or what you rather wanted to read.
Apropos, one last thing: Thanks a lot for reading this postmortem! It hope you enjoyed it as much as I enjoyed writing it. (And it’s probably pretty obvious, but maybe you want to follow this other conveniently placed link and rate my game? Your feedback means a lot to me!)
LD #25 was significant for me. Not only did I submit my first entry to the compo, it is the first time that I have created a game and put it up for anyone in the world to play. The feedback in the comments has been fantastic, and I’m kicking myself for not having participated sooner.
Take a minute and try Goombah! here.
The first thing that came to mind when I saw the theme announcement was to focus on a grand villain – Darth Vader, Genghis Khan, Kane, etc. The second thing I thought of was stupid and funny. I went with that.
It’s hard out there for a goomba. He sits on a little platform, waiting patiently for the plumber to show up, at which time mr. goomba either gets stepped on or walks off a ledge. I didn’t want to make the game quite that boring, so I took out the ledges and provided an endless stream of jumping men to avoid. The goomba’s chances of survival are still slim, but at least it is interesting!
What went well
- Kept it simple – I had a simple design that was not too difficult to implement in a few hours. I considered adding game play features, but focused instead on making everything look nice and by the time I could have come back to changing game play it was time to submit.
- Flashpunk – The only exposure I had to flash development before the compo was running through the flashpunk tutorial. For me it was a great place to start, and that engine is a snap to use!
- Draw first – I am not what you would call an artistically gifted man. I spent the first hour or two in GIMP drawing out the sprites for the game, so that I knew they were done and did not have to worry about the art while I was working on the code. If I had done it the other way around, I’m not sure my placeholder art (colored squares) would have ever been replaced.
- Submit early – I submitted the game early on Sunday because I had other obligations, and at that time only a few dozen games total had been submitted. I know they don’t count for scoring, but almost 50 people had played my game before the end of the day. That’s just cool.
What could be better
- Levels – One thing I would have liked would be to add some variety to the game by having different platform configurations to mix up the game play. The game works, but does get boring pretty quickly.
- Interface – An actual menu, instructions screen, and game over screen would be nice to have in there. The text elements up top were a last minute addition, and while I think they do the job it could be better.
- Frame based motion – I would much rather have implemented motion based on actual elapsed time, but started the game by implementing motion based on number of frames passed. Around hour 5 I realized that this could be an issue, but never managed to go back and rework it. Next time, I’ll start the right way.
Having actually made a game in a weekend, and then having so many people play and comment on that game has been a great experience. And to everyone who has played and commented on my entry, thank you!
I’ve seen the infamous Ludum Dare come to an end for the fifth time! Once again I submitted a game I was satisfied with, but there were many who did not survive.
Ludum Dare is never the same thing twice, and nothing can fully prepare you for it. But unusually many things were different this time. The most glaring thing was my new framework, FlashPunk, which I learned thinking of game jams specifically. And by “new”, I mean I went from knowing Hello World to finishing my most addictive LD entry in 4 days.
This was a self-imposed challenge, and I conquered it. That’s what LD is all about.
But it wasn’t a case of going from point A to point B. The main theme in my development turned out to be redesigning and piecing things together.
In the beginning, it seemed deceptively easy. I had some routines from previous LDs, and FlashPunk felt convenient for getting things done fast, so I was already working on the presentation on the first day.
Little did I know I was riding a train to the wrong direction!
A ONE-WAY TRAIN!
In the last quarter of the compo, I reached the point I’d previously named the “Ludum Dare middle-age crisis”. I thought of all the possible games I could have made instead of wasting time on something so lackluster.
The final 10 hours was where the magic happened. I stopped beating around the bush and admitted to myself I didn’t like the gameplay; it didn’t have enough action, it didn’t have enough control, it didn’t have enough strategy. It wasn’t a game I’d wanted to play if it came up while rating entries. I decided I wasn’t going to take the easy way out and submit a mediocre, unfinished game. I wouldn’t be happy unless I improved somehow from the last time.
Finally, I made an effort to consider something fundamental.
Namely, the feel of the game. Something that can’t be communicated. The thing that separates gaming from other mediums. Being able to concentrate on it was why I’d chosen a small scope to begin with.
I had to remind myself, what do I want the game to feel like? What do I do to get there? Game design starts with the spark of motivation, a flash of what the finished product will feel like. You know, “wouldn’t it be awesome to have a game where…”. I had strayed too far from this initial impression and didn’t trust my intuition. It was time for me to stop and look back for once.
I had been racing for one stroke of insight, without realizing I’d already run past several. I just couldn’t feel them because the gameplay didn’t reflect them properly. I had been adding more and more unconnected ideas, taking the thing apart and rebuilding it over and over. The source code was a mashup of unfinished games with incompatible gameplay.
So I reviewed what was important to me – resource management, strategic preparation, micromanagement, emergent puzzles – and only left the features that I felt supported these.
Suddenly, it was fun to play. Success isn’t a linear path, often it’s failing and failing until there are so many failures that they block the exits and one of the balls is bound to go in.
Anyway, after the intense last stretch, I managed to submit in time, even with a couple of minutes to spare. Everything came together after all.
A quick recap would be in order:
What went right
- I learned something new about game design and Flash development.
- The music rocks, the graphics are crispy.
- The game is pretty simplistic while having lots of depth. Basically, I did the game I wanted to play.
What went wrong
- The code’s somewhat messy and rushed, leading to a bug that places two blocks in the same tile, and even a gamebreaking bug if you get far enough while playing it conservatively (in terms of enemy placement). I seem to encounter the latter annoyingly often nowadays…
- People are saying it’s confusing. Learning the mechanics through trial and error was something I was aiming for, but maybe more visual cues should be used to improve the process.
Based on those points, I’m pleased to announce I will be making a post-compo version of my entry! I’m going to at least clean up the code, squish the bugs, and add the “ignorable tutorial” I brainstormed in the comment section. I’d love to make upgraded versions of all my Ludum Dare entries some day, but I feel this one urgently deserves it, and it can be done feasibly. Hell, maybe I’ll even submit it to Kongregate with a high score feature.
I finished my Ludum Dare entry, I didn’t make a post yesterday because I was too tired.
Come play it if you want some rpg goodness. Click here!
Also, here’s a timelapse.
Burglary, an action/stealth game about stealing from the rich and giving to those needing it: Yourself.
And here we go, a blog-post about my entry!
Explore the premises. Evade the guards. Pick locks.
Steal the treasures! And the escape with them.
Burglary, an action/stealth game about stealing from
the rich and giving to those needing it: Yourself.
View a gameplay video on YouTube:
Steps taken so far:
- Hear what the theme is
- Do some brainstorming
- Decide to do something with Unity
- Get a good nights sleep
- Decide not to go with Unity after all and do AS3/Flashpunk instead
- Finally upload the base code*
- FINALLY start coding away!
Good luck everybody!
*) I know it’s bad style to upload it so late – I’m sorry. I don’t have base code per se, I salvage other projects, so I had to get the idea first to decide on which set of base code to use. Next time I’ll do it properly!
edit: Damn, I forgot some level loading code. Updated.
this post is a direct mirror from my blog, I’ll be doing this a lot so as to not waste too much time (yours and mine)
Hoo Wow, This One’s Tricky!
I’m still brainstorming 2.5hrs after the theme announcement. This is a tough one!
I have a nine page bullet list of ideas, but choosing is a little harder than it was last time because:
- My favourite ideas are likely the favourites of many other people
- My least favourite ideas mostly fall under the following categories:
- nice concept, but where’s the game?
- how does that differ from the hero version?
- nice game, but where’s the concept
Normally at this point I’d start work on coding up the basic framework and getting the generic skeleton going, but since I’m not sure which game I’m going with I still don’t know whether AS3/FlashPunk or Java/LibGDX are going to be more appropriate.
I’m leaning toward FlashPunk again simply because more is covered by the library, but that would instantly limit my chances of doing anything simulation-based as the VM (as far as I know) is not as well suited. Distribution is significantly easier though.
Another caveat if I choose Java/LibGDX is that less people will play the game unless it’s embeddable in the browser – outside of Processing I’ve never attempted this, which could either be deceptively simple or a waste of a few good hours.
More coffee, and standing in the sun before I choose.
I give myself one hour to choose, and a further hour to get whichever dev environment I go for setup and ready to go. If the setup is not yet done by that point I shall switch to a simpler environment.
Hey guys, 3 guys in for the jam.
Code: Flash Develop + Flashpunk
Graphics: Paint.Net, GraphicsGale, Pyxeledit
Sound: LMMS or Musagi, BFXR
I wish everyone good luck!
You are the villain!
I’m going to give it a shot. The bad news is that I lose 7 hours tomorrow but i think I should be able to recover. Worst case scenario is that I submit it to the Jam.
Sound Effects: *Shrug*
I told you I’d make a warmup. And now I feel… warm. It’s like piss running down my hairy legs.
I didn’t know anything about ActionScript or FlashPunk when I started this, but it only took a couple hours of actual work to make. Experience helped, but I had to unlearn things too. I mostly struggled with the tree generation (because I did it dumb the first time) and all that nasty reference stuff, combined with FlashPunk abstracting away information that I’m used to being ubiquitous. Still, I get the impression it’s a powerful framework once you learn its way of thinking, and it feels great to have maed gaem with it.
But much like warm piss, transient feelings of success go cold fast. An ambitious developer always aims higher, all the way to integer overflow.
The real test is exactly two days away. Not sure if picking up Ogmo would be worth it at this point. I think I’ll just go take a look at others’ FlashPunk games and see how I’ve been doing everything all wrong.
I am declaring my intent to participate in Ludum Dare XXV. Last time out was one of my more successful entries, even if I only got what I would consider a passing score. This time I plan on taking it further. Here are my tools:
- pencil, paper, eraser, ruler, iPad
My usual set of guidelines:
- KISS – Keep It Simple, Stupid! Making something too complex is just a recipe for a headache at 1pm on Sunday afternoon.
- Finish most of the work by Saturday night so I can spend Sunday polishing.
- Don’t run into dumb problems that eat up eight hours.
- Doodle/Pixel art style. I usually sketch something and then do some post-scanning modifications. I’m not a great artist, so sometimes I’ll just draw half of the object and mirror it to keep it symmetric. I now have an iPad, so I will probably experiment by drawing on it with a stylus.
Finally, the post mortem!
This was my third Ludum Dare and I think it was the best one!
Let’s start at the night of the theme announcement, I was really excited for this Ludum Dare (as always) and I decided that I should go sleep early (23:00). I went to sleep and for some reasons I woke up at 3:50 AM just ten minutes before the theme announcement. I saw that the theme was finally evolution (All of this while I’m in bed :P), I tried to get back to sleep but I wasn’t able to, so I already started to plan my game!
My idea was to make a game where you are a life form which evolve by adding new cells to it. Each cell will cost a different amount of DNA which you collect by killing other life forms and will have a different ability like power, defense, speed etc.
When I woke up I started my live stream and created a new project in FlashDevelop. The first thing that I did was to write my idea down.
Later, I started the programming and added the basic life form entity and cells.
Than, I programmed the life form editor/store.
Later on, I added some parallax scrolling background and some DNA.
And I completed the GUI.
Finally I added some nice random generated life forms.
This was my best Ludum Dare ever! It was the first time which I used the whole 48 hours till the end, The game came out perfectly as I wanted it to be and the live stream was super fun! (Thanks for everyone who watched it :-))
The gameplay is really fun, I really like the graphics and the music and the most important part, I had a lot of fun!
I really worked until the last minutes and it was dangerous, some instructions are missing and sometimes enemies spawn right on you and instant kills you.
And once again, I made a game in 48 hours for Ludum Dare!
My Ludum Dare Jam entry is Those Stupid Aliens. It’s a top-down space shooter.
The player is firing from a capital ship at the bottom of the screen. It has just gone through a battle, defeating the enemy battleship, stranding hundreds of aliens. As a result of the battle, it only has enough shields to withstand five hits. Your technicians are routing power and fixing subsystems, but they are tired. When you defeat a wave of enemies, it builds up the morale of the crew and they repair one point worth of shield. And that brings us to Those Stupid Aliens, and your job, as one of the last remaining gunners.
Using the mouse to guide the targeting reticule, and the left mouse button to fire, your goal is to shoot the alien ships that appear. They will show up in groups and express different characteristics based on the makeup of their internal properties. As the game goes on, the successful aliens will have their internal properties inserted into the gene pool, and the next waves will be created from this information. Eventually, you should see ‘smarter’ aliens which are more difficult to defeat.
What Went Right
I used Flash/Flex/AS3 with FlashPunk and the FlashDevelop IDE. I’ve been using them for over a year with a few different unfinished, but ‘demo-able’ projects so I was confident in my ability to use it for Ludum Dare and be able to complete something in 48 hours. I will definitely use FlashPunk in December’s competition and likely beyond.
My last successful entry was in LD48_15. The biggest thing I took away from that was the scope. I was essentially trying to implement a clone of a game I loved to play as a kid. Therefore, I already knew the features that needed to be implemented and tempered my desire to feature creep. For this competition, I tried to make sure that I limited what I intended to implement to make sure the project didn’t get out from under me. I came up with an idea that didn’t require level design or a sheet full of tiles. That certainly saved a lot of time and work. I kept the original , knowing that I wouldn’t have time to implement them all anyway.
I knew I didn’t want the player to have to use the keyboard much–or at all, if possible. Therefore I just implemented mouse movement and single click firing. No other buttons on the screen. If I had to, I was ready to implement a “Shift-Click” for a secondary action, but I never really let one enter the scope. The idea behind keeping the controls simple was that if I made something worthy, I could easily port it to a mobile touch device.
Sound and Graphics
On Sunday morning, updated my placeholder capital ship (which I’m still not really happy with), added sound effects and the explosion particle generator. Once I did this, it’s like the ‘game’ part of the game jumped out at me, even though the gameplay didn’t change. It really gained an old arcade feel and I think was a psychological milestone.
What Went Wrong
I spend too much time doing other things this weekend. Mostly it was stuff with my family, but an hour here and there adds up. When the 48 hours were up, I was not done, and had to fall back on the Jam. Though I must say that this project moved along much better than any previous LD attempt in the past three years.
For the bullet, I took the target location (the mouse click) and projected out the location that it crosses the top of the screen. Each frame it would move towards that location. For the alien movement, I tried to do something similar using the direction of travel (a normalized point relative to the original location) and the current location to create the target on the edge of the screen. That target would be recalculated whenever the alien changed direction based on it’s internal properties. It worked ok, but later I realized I only needed keep adjusting the target point to something beyond the max speed every turn. A simple multiplication instead of trying to figure out the math behind the projection and deal with different quadrants.
One thing I didn’t get a chance to implement, or even figure out a decent signal for it, was feedback on the evolution of the aliens. I wanted to give some sort of indication that the evolution was happening or that there were successful aliens in the current wave. I never really came up with a good idea, so I never implemented it. I think some sort of feedback would have been great as it would help give the player a sense of change, rather than just witnessing wave after wave and having to notice changes all on their own.
I made the music using the online instrument Circuli. It’s a neat thing to play with, but I don’t think what I used fits the game all that well. I purchased the iPhone app, so I’ll probably mess around with it again, but I probably won’t be using it in the post-compo version.
I have a background engine hum during play mode instead of music. I don’t know how annoying it might seem for other people. I debated switching it to music, but the intro music didn’t fit and I didn’t have time to create anything. Since it’s constant, I don’t think it would work out with music at the same time. If the ship moved, then it could potentially only make sound at that point, but it doesn’t, so I think I have to decide which way to move forward with it.
Method of Evolution
I think the idea behind the aliens becoming smarter is good. It’s a survival of the fittest process, with every trait possibly live from the beginning. Every time you play, a new initial gene pool is created from randomized DNA. This makes it impossible to set a difficulty. You may get an initial gene pool that consists of aliens that are slow moving, large, and don’t fire very often. Or you may get small, fast moving sprinklers. I sort of faked some progressive difficulty it raising the number of aliens in the wave. I’m not against that idea, but I wanted it to be gradual.
One of the first things I’d like to do is change the alien graphics. I think I want to use bitmaps, but I also kinda like the vector look. (I’m actually cheating, the vector graphics are really bitmap placeholders.) At first, my intention was to use the look and the colors as purely cosmetic traits, but I to like the idea that they represent something internal. It would be a way to solve part of the problem of feedback that I mentioned earlier.
I also need to redo the evolution component. I never implemented mutations, which would serve to introduce traits that did not exist in the initial gene pool, and reintroduce phased out traits that might have better success in a different combination. I’d like to come up with a way that makes it possible to use the traits to have a couple difficulty modes without relying on wave size. The way I do it now is closer to a true evolution using survival of the fittest (which fits the theme) rather than a carefully planned difficulty progression (which some entries passed off as evolution). Somewhere in the middle is the solution.
Right now the enemies hover near edges, which makes sense since they are introduced there and often don’t have traits that move them away. I need to get them out of the edges without making them predictable at the start of the wave or do something that obviously goes against their internal traits.
I think I’m fairly happy with this project. I ended up with a game that feels like a game. Many times I’ve ended up at the halfway point and I don’t know what I’m doing or how I’m going to make it fun. I managed this time to come up with what I feel is interesting and has promise to be expanded to keep attention longer than a few minutes.
I definitely did better than I thought I would with the theme. I had originally been a big proponent of Evolution a few years ago, but cooled on it when I realized that it would take a long time to get a good algorithm set up. I’ve been thinking of this kind of stuff for over a decade. I used to sit in biology and other classes and diagram out some sandbox DNA projects that I never did implement. I’m surprised at what I have done in the weekend time frame, so I might go back and visit those old notes sometime, now that I’ve had a little taste of it here.
For the past few years I’ve been pretty disappointed in my LD participation over the past couple years. I mostly didn’t finish and gave up. Sometimes it was because I didn’t feel I had come up with a good enough idea on the theme, or ran into problems and didn’t have the heart to finish, or had too many other activities that I couldn’t avoid. After my experience with LD24, I’m really looking forward to December.