Posts Tagged ‘turn-based’
After the ludum 27 48 hour compo, I continued to develop Turn Fighter Foo in order to bring out a version that is closer to what I had imagined.
So whats new?
The first major thing (not visible though) is that the code base has been ported from Flixel with Actionscript/Flash to HaxeFlixel with Haxe/OpenFL. Doing this has the advantage of being able to port it to other platforms natively. Expect something like gamepad support on desktop or a mobile version sometime in the future!
There are a few new hit animations for the fighters as well as new animations for the new moves that they can perform. The background has been spruced up a little to make it less bland and some background music thrown in to accompany the fighting. Here is an example of what to expect:
The first major change is a rebalancing of the play matrix for moves. You might have noticed that kick is probably the most overpowered move in the 48hr compo version. I’ve tried to create a version where there is always a counter to any move. For example, kick is now countered by the low sweep like the picture above shows. And air attacks can now be countered by a new uppercut move. The play matrix is still not perfect but it is far better than the 48 hr compo version. Along with the new normal moves, there are also a couple of special moves that I’ve added which were inspired (aka ripped off) from most fighting games. The first is a ranged fireball attack and a move called the phoenix punch which kinda resembles a dragon punch (very original I know! ). Have a look at the moves list below for how to execute the new moves. More special moves to come in future versions hopefully.
The post compo version now has several options that can be customised such as the ability to hide your inputs from your opponent, increasing/decreasing the number of inputs per turn and changing the turn timer duration (or have unlimited time). The last option enables Turn Fighter FOO to be played in Ippon scoring mode which means that a turn ends as soon as one fighter performs a decisive blow on the opponent scoring one point. The decisive blow occurs when one fighter performs a move that naturally counters the opposing fighter’s current move, thus getting the hit. Score three points and the match is over.
Last but not least, I’ve added an AI player for those that do not have anyone to play with. Yes, there is now a single player mode! The AI is not great but it should be enough to get a flavor of what the game is all about. I’ve gotten feedback regarding my compo version about how some players didn’t have a partner to play with so this one is for those players!
The post compo version of Turn Fighter Foo may be found (along with the original version) at my ludum 27 entry page here.
New Moves list
- Upper cut – down, punch
- Low sweep – down, kick
- Jump punch – up, right, punch (if facing right)
- Fireball – down, right, punch (if facing right)
- Phoenix punch – right, down, right, punch (if facing right)
- Duck – down
- Idle has been removed as an input. Use block instead.
- Controls for player 1 has changed to w,a,s,d for up,left, down,right and j,k,l,n for punch, kick, block, clear move list.
- Addition of new ready button for the unlimited time match. When both players hit the ready button, then the turn plays out. Player1 ready – space, Player2 ready – end.
Well, the fact that I got this far must signify something.
This is my first Ludum Dare (the first for my partner too) and I’m pretty happy with the results. At 4:00 P.M on Sunday I was pretty sure this was going to be an absolute flop – but somehow it actually worked itself out. So without further ado, I’ll introduce the game concept and a few other details.
Game concept: It was heavily inspired by Chronotron, a game where players can go back in time and solve puzzles by making their former selves do part of the work. I played Chronotron a while back and didn’t really think much of it at first. But then… I realized there might just be something to this game that could be applied elsewhere. As in, the concept of time travel. Before Chronotron, I’d never really heard of a game which used time travel as a gameplay element. Turns out there are a few, but most of them don’t implement it like Chronotron.
So we decided to give time travel a second chance and incorporate it into a turn-based semi-strategy game. You would have as much time as you wanted to think about your actions, and then you would execute them. I even had ideas for a kind of time-travel portal device (past portal and future portal).
And the name of the game: Timing is Everything
What went well:
- During the early part of game development, I was just churning out code. My partner was drawing pretty well (I’m have the artistic skills of a planarian) and a lot of the early code was working flawlessly on the first test.
- The art style was definitely influenced by games like Geometry Wars and Pew-Pew. One would think that it would have no place in such a strategic game. But it actually fit in quite nicely.
- Some levels were quite creative. My partner designed all of them (although I did help out). The ideas of paradox avoidance shows up in the later levels and was well executed.
- Libgdx proved to be pretty easy to use as well as cross-platform.
What didn’t go so well:
- Time travel was a real pain to deal with. To make it easier on ourselves, we had started with a goal of making ANY game entity capable of traveling through time (just in case that time-portal device ended up being used). When I actually got to coding the player’s interactions with the time machine I hit problems. Originally, we wanted the player to be able to specify how far back in time they wanted to travel. This ended up creating a lot of annoying bugs and glitches, and the little framework which I had written didn’t suffice. So, we ended up ditching a huge chunk of code and going back to doing things Chrontron style – you can only go back to second 0. And after a lot of modification, we got that to work. The other problem was being able to use the time machine more than once. And the idea that when former selves went into the time machine, they had to DISAPPEAR but still get reverted later on. One of my ideas that never ended up completely working was that former selves could be linked to their future selves via some kind of linked list starting at the current player. In the end, annoying bugs and glitches made a game with more than two instances of the player impossible, and we ended up compromising and only allowing the players to use the time machine twice. If we had thought through the implications of time-travel ahead of time, we could have made a far simpler and more efficient framework which would have been able to handle that.
- Some of the early levels were a bit too hard. Level 2 should have been level 8. And level 10 was too easy (at first). Some levels were designed with only 1 solution… so if you made one wrong move or if you forgot to sprint, you would inevitably fail.
- The code eventually disintegrated into an absolute mess in the later hours. Best to look at the actual code if you want to see what an “absolute mess” looks like. Some code was unused.
- Real life got in the way. This is probably the busiest time of the year for me, and to shove everything to the side for the Dare was not easy. In reality, we only put about 20 hours of work into this entry in the 72 hours we had to make it.
- Porting issues. While they say “Port later” in the guide, be careful. If you want to make a web game, prototype on your browser frequently. I didn’t and I had an 1 hr and 45 mins to figure out Libgdx’s GWT port. And it didn’t work, so sometime this week when I have time, I’ll have to make a web port.
Anyways, if you haven’t yet played it, try it out here.
So I’ve decided to write a post mortem for my first ever ludum dare entry Turn Fighter Foo. I’m really proud of what I had achieved in such a short amount of time and I just wanted the opportunity to share the story and the thought processes behind it.
The first day
When the theme “10 seconds “was revealed on the ludum site at 10:30 am local time, the first thing I did was to brainstorm and write down every idea I could come up with related to the theme. Ideas for mechanics like 10 second power ups, 10 second lives and 10 second timers floated around mixed in with game ideas like escaping from a monster with only 10 second of stare time (yeah I ripped it off amnesia), a 10 second hundred meter dash and even a …ahem “reproductive” game with the control system of dance dance revolution to try and get a 10 second climax result.
My initial attempt was to build the monster game with a flashlight with a 10 second battery life that you could use to scare away the monster using Construct 2. Eventually, I got bored with the idea and ditched the monster game and was back at square one. I had a look at my list of brainstorms again and fell upon number 10 on the list which read “10 second to decide what to do in a situation – Each turn is a second”. I then started to think about creating a turn based game where you had a limited amount of time (10 seconds) to make a decision like timed chess. I remembered a previous game that I had stumbled on from a previous ludum dare called RockPaperRPG which was a game where players took simultaneous turns to select from melee, block and magic to defeat an opponent. I was going to extend upon that idea but with timed limited turns. This meant that I needed a greater range of actions to choose from so that time became a precious resource for the player. It so happened that I had just bought Mortal Kombat on steam that morning too and I thought about whether anyone has built a turn based fighting game before. And so the basic idea behind what would become Turn Fighter Foo was born. I tried to create the initial prototype in Construct 2. Below is a picture of that early prototype.
By late Saturday afternoon I was beginning to become frustrated with Construct 2 and I was ready to throw away this prototype too. However, I really liked the concept, I just didn’t like the way I had to manipulate arrays in the editor. I made the hard decision to give up on Construct 2 and fall back to coding the game on flash via the flixel library. The other problem was I had agreed to go to my friend’s birthday gathering and so I was going to lose my whole Saturday evening. I decided to make a quick appearance and get back home in time to do more development. The quick appearance saw me coming home at 12:00 am and slightly intoxicated. I started quickly banging away on the keyboard and within a couple of hours I had a white square moving within a grid which was more progress than I had made with my first prototype.
The second day
After six hours of sleep, I got up at eight and proceeded to start hammering away code. Most of what you can see was made on Sunday. Progress was slow but steady. By around lunch time I had the basic input and battle replay system up with a white square moving around. By late afternoon, I had two squares duking it out on a grid. I spent most of Sunday night actually programming the structure of the game, I had a battle engine but I still needed a game structure to handle the flow of the game from beginning to end plus reset conditions. I also needed all the other UI stuff that showed status (like healthbars). I also spent a bit of time doing the sprite graphics on Sunday night.
Most of the early morning of the Monday was spent fixing up issues and making sure that there wasn’t any major problems with the code flow. I also took some time to create sounds using bfxr and that Sakura tree in the background. By about 4 or 5 am on a Monday morning I probably had the final build and spent the next hour working out hosting on google drive, writing the readme and going through the process of submission. The title “Turn Fighter Foo” was selected when I had to fill in the name box in the submission process. I wanted something that was a parody of Street Fighter 2. Originally, it was going to be “Turn Fighter Too” but I took a play on the term Foo Fighter (I originally had in mind the band Foo Fighters) and with the word “Foo” in a programming context.
- I like the basic concept of the turn based fighting game and I can see areas where I can iterate upon it.
- I made a playable game! It’s a bit bare bones but it does have all the elements of a game’s structure.
- I really enjoyed the experience and the 48 hour time limit really stopped my procrastination habit in getting the game out.
- No AI player. That means no single player mode in the version I handed up.
- The moves aren’t really balanced. The play matrix code is pretty horrible and copy and pasted at various sections.
- No music … I didn’t really plan this part at all.
- There was a lot of time wasted.
- I only had two hours of sleep on Monday morning before I went to work.
- Know your tools well. I was never really comfortable with Construct 2.
- Don’t try to fit in too many other things on a ludum dare weekend.
Going to go play and rate some of the other games now. Hope you enjoyed reading what I went through. You may find my ludum entry here
I decided to take part in this Mini LD as a reply to a challenge issued by an ex-coworker of mine on twitter. The goal was to develop a game for the jam in just one weekend as opposed to 7Days. I’m already past the 48h mark, but my challenger forfeited so I guess it’s either a nil-nil or I win by default. Anyway, my game for this Mini-LD is called MINI WARS, as a token to a great turn-based strategy game that I love, Advance Wars (GBA and NDS).
This is how the game looks at this point. I wanted to go with a Gameboy Advance / Gameboy classic feel combined with UI elements of the Nintendo DS. All the graphics, except for the portrait and level indicator (arrow in screen 2) have been drawn by me on Friday, with some updates during the weekend.
- Turn based
- 3 types of units: Infantry, Tanks and Mechs (rock-paper-scissors)
- Terrain matters: Buildings and Trees raise defense, water lowers it and bases (square buildings with a flag) restore HP each turn.
- Each unit has 16 action points. Movement costs 4 AP / TILE while shooting requires 8 AP.
Here’s a video I uploaded a few minutes ago to youtube:
Note that the AI is as dumb as a sack of puppies. Reason is that I broke the pathfinding code near the 48h mark when I updated my Grid class and had little to no time to rewrite it with many other stuff left unfinished. Probably, after the jam, I’ll re-write the entire thing from ground up and port it to Android in order to check the market (free-to-play, no IAP).
What left? Options menu, about and In-Game-Menu, + two more levels. The game is designed for 480×320 resolution, but can be upscaled from the Options Menu.
Developed using MoaiSDK and LUA (+ some C++ for some edits to the HOST – lua player).
My entry for MiniLD 39 has been posted http://www.ludumdare.com/compo/minild-39/?action=preview&uid=15656 The hindsight for this entry was what would I have done had a school shooting right before LD#25 had not happened and I went with my original idea for that theme instead of a non-violent game.