June #1GAM: I Think I’ll Do Line-Of-Sight

Four days into June, and I hadn’t thought about what to make for the One Game a Month challenge for June.

I searched online for interesting mechanics to play with, but nothing really jumped out at me. If you want to see some ridiculous concepts, try out the Game Idea Generator. B-)

At some point, I thought about the idea of being shipwrecked and needing to survive. Maybe you’re on an deserted island in the ocean. Maybe you’re on a deserted planet in the far reaches of space.

I liked it. The player has to deal with hunger, weather, injuries, disease, wildlife, environmental hazards, all while trying to survive. Maybe help is coming if you wait long enough? Maybe you need to explore the island and build something to find your own way to freedom? Maybe there are others in the same predicament?

I don’t know. But exploring sounded like it had to be a big part of this game. You’re stranded, and you don’t know where you are, so you better get a handle on your surroundings.

And since I decided to do a tile-based grid, it seems like a good opportunity to do line-of-sight fog of war.

I like the idea that the player can see his/her immediate surroundings but needs to explore to see more. I like the idea of multiple levels of fog. One tile away is visible. Two tiles away is a little foggy. Three tiles away is more foggy. Four tiles is opaque.

Below is a mock-up demonstrating experiments with some fog made in the GIMP to see how it might look with different levels.

June #1GAM Mock-up

I’m not sure I’m happy with it, as I want it to be more difficult to see what’s behind the fog. Maybe I can experiment with different ways to render or create fog. We’ll see.

I also have to think about explored areas vs areas the player is immediately able to see. I’m reminded of Fate of the Dragon‘s fog of war, which returned to opaque if you weren’t in an area after a period of time. I think I’ll follow the normal RTS convention of graying out explored areas you can’t currently see.

Perhaps I’ll use Zelda-like controls. I was thinking about using the mouse and doing click-to-move/interact for simplicity, but I wonder if there might be some advantages to using the keyboard in terms of how expressive the player can choose to be. Maybe there are good reasons to crawl, sit, rest, walk, run (which takes a lot of precious energy), swim, jump, climb, open inventory, use items.

But then again, I can probably do all of the above with the mouse as well as the keyboard. Spacebar can be used to toggle sitting/standing, CTRL+click could be used to crawl, while Shift+click could be used to run.

Either way, I’ll probably find that I won’t add all of this due to only having the rest of June to finish this game. B-)

May #1GAM Entry: Hungry Frogs

The updates have been coming in quickly towards the end of the month, but my May project for One Game a Month is finished.

Download Hungry Frogs for Linux 64-bit (352 kb tar.gz file)

May #1GAM

Rather, it is finished enough. You can control the frog by jumping and turning around. If you fall in the water, the frog slowly swims back to the nearest lily pad. Flies will move across the screen in a straight line from left to right, and you need to jump to eat them. If you miss half of them in a given round, the game is over. Otherwise, the flies move faster each round, making it more difficult to catch them.

I didn’t take many screenshots as I thought the rectangles made for an uninteresting still shot, but I did make videos to demonstrate progress of the game’s development.

First, getting the jumping physics to work:

Then, landing on lily pads and swimming when you fall in the water:

Then, some game play, with edible flies:

And the final version, with faster flies each round and a game over screen if you miss too many:

I moved the frog’s tongue down as I realized it looked strange at the top of the head and I wasn’t going to have time to replace the white rectangle with a nice animated frog image. I would have liked to have flies moving in fly-like ways instead of straight lines. I really appreciate how the developers of Frogs and Flies nailed it in the constraints of an Atari 2600’s memory and processing power.

I’m not sure I’m happy with how easy it is now. Originally it was difficult to catch flies, so I expanded the tongue’s collision detection to include the frog’s body as well as a space around the tongue. Now it might be too forgiving, although there’s a gap if the frog is moving fast enough that from one frame to the next the collision box goes around the fly’s location. I’d fix that next if I had more time.

I’ve never made a platformer before, and this project was a good start. I am pleased with the jumping physics, although I need to figure out a better way to determine the maximum heights of jumps.

All in all, it was a fun project to make, even if it is once again another project with scope cut drastically to make the deadline.

My May #1GAM: Now You Can Eat Flies

During the GBGames Game Dev Co-Op Hour this morning, I added flies and the ability to eat them, as you can see in this Hungry Frogs progress video:

I realized that the tongue’s dimensions were too small and made it too difficult to eat flies, so I increased the dimensions beyond what the tongue’s visuals would indicate, and I eventually even added the frog’s body as part of the “did the frog eat this fly” collision detection.

I noticed while making this video that sometimes the frog’s tongue looks like it should eat a fly as it falls, but it must be falling too fast since the fly remains, meaning that the collision detection happened above and below the fly but not in-between, where the fly actually is. One way to solve it is to do a more complex collision detection in which I keep track of where the frog was in the previous frame and check for the space in between as well. Another is to reduce the speed that the frog currently moves so that such checks don’t have to happen. The latter would be easier in my limited time.

My next step is to provide a way to end the level and start a new one.

And animation would be a nice way to finish it before the end of the month, although I’m not optimistic that I’ll be able to dedicate the time.

My May #1GAM: Now with Lily Pads and Water Hazards

Last week, I wrote about my May #1GAM project’s progress, explaining that I haven’t been able to dedicate a lot of time this month to the project, partly due to day job crunch and partly due to travel and events going on around this time.

I was able to tweak the jumping physics a bit, and I’m much more satisfied with it. I like the idea of short hops getting the player into position to take a large leap and landing safely on the other lily pad.

As you can see in this updated May #1GAM demo video, I’ve split the lily pad into two, and now I’ve made the water a hazard:

If the frog falls in, it automatically swims to the nearest lily pad. It’s a constant speed, unlike the swimming motion that was mimicked so well in Frogs and Flies, but it’s in.

Since the player can’t control the frog when it is swimming, it means the player has less time to eat the flies before the sun goes down, and so therefore landing in the water means less points will be earned.

The next biggest thing to implement: flies and the eating of them. In hindsight, this aspect should have been implemented first, as it impacts how much I like the jumping physics, but I really wanted the swimming aspect in.

And I’ll follow it up with a score indicator and a timer to represent a day of fly-eating.

If I have time, maybe I’ll be able to replace the square with an actual animated sprite of a frog.

How’s your One Game a Month project going?

The Linux Game Tome Is Shutting Down

A few months ago I wrote about how it is so difficult to submit games to Linux gaming sites, based on my experience with trying to spread the word about the latest update of Stop That Hero!

One of those sites is The Linux Game Tome. It was one of my favorite Linux gaming sites, and had an active forum for developers and players, as well as an IRC channel.

In recent times, it has been plagued with spam and hardware issues. Twice it had been down for months due to a faulty hard drive, for instance. These problems resulted in a lack of activity when it was finally back up. When they updated their forums last summer, it broke the ability to submit games to their database. To this day, Summoning Wars was the last game with an update in June of 2012.

Last month, there was a new post, however, and it wasn’t good news for fans.

The Linux Game Tome will shut down on April 13. Those of us who have maintained happypenguin.org over the years now lack both the time and the ambition to do what is necessary to keep the site afloat.

A later update provided a link to a dump of the game database, all 300+ MB of it, with the idea that someone might be able to recreate the site if they so choose to do so.

Since then, two forums have popped up about how to carry on without the original site operators. One is Resurrecting the Tome, and the other is The Linux Game Tome Ideas and Discussion. I’ll be interested in seeing what comes out of these discussions.

While my new favorite site is the active Gaming on Linux, The Linux Game Tome holds a special place in my heart. I thank Bob Zimbinski, aka bobz, for all he had done, and I wish him luck in whatever his future ambitions are.

February #1GAM Entry: Electomagnetic Play

I managed to put my February entry for One Game a Month together mostly in the last couple of weeks, sometimes with only 15 minutes at a time to dedicate to working on it. It’s amazing how much comes together in 15 minutes.

Electromagnetic Play is currently only available for 64-bit Linux as I wanted to get it in under the deadline. I’ll work on ports later when I have some time.

Download Electromagnetic Play for Linux 64-bit (1.5MB tar.gz file)

A quick description of the evolution of the game.

I thought of having magnets that you use to move metal balls around an arena.

February 1GAM

Eventually I decided on a simple game in which you have to catch the balls in a metal bucket, and you can only move the bucket by charging magnets on either end.

February 1GAM

Once I had balls dropping and magnets charging when you clicked on the green buttons, I had something that was basically finished.

February 1GAM

Add some scoring and lose conditions…

February 1GAM

…and tweak the challenge a bit by level, and we have a game.

February 1GAM

January #1GAM Entry: Walls and Armies

I’m in crunch at the day job, and so I didn’t have weekends like I had hoped to work on a game project. Luckily, I had finished the design of this two-player card game, and it counts. I call it “Walls and Armies”, and the rules are below.

CardGameDemonstration

Setup:
Take a standard 52 card deck of cards. Remove the jokers from the deck and leave them out of the game.
Shuffle all cards into a main deck.

For each player:

  • Determine how many “walls” and “army” cards you get. For each type,
  • Flip the top card from the main deck to determine the number of cards to deal
  • If it is a face card (Jack, Queen, King, Ace), then place that card down in front of the player face-up and sideways to indicate that it is a “shield”.
  • If it is a number card, discard the card and deal the indicated number of cards face-down in front of the player. For example, if the top card was a 3, then discard the 3 and deal three cards.
  • The wall cards and shield cards are laid out individually in front of the player. The army cards are placed in a deck, and the player should not look at them.

Play:
The first player is the one who has the fewest wall cards, or if tied, the one with fewest shields, or if tied again, the one with the fewest army cards. In case of a tie across all three sets of cards, flip a coin.

For each player:

  • Pick one of the opponent’s wall or shield cards to attack, then flip the top card from your army deck. If the target card is face-down, flip it over to reveal it. You cannot attack wall cards until your opponent’s shield cards are eliminated.
  • If your card is higher, then discard both the target card and the army card.
  • Otherwise, your opponent can choose to leave it alone or counter-attack:
  • If left alone, you may stack your next army card on top of any of your in-play army cards, adding the number of the armies together to attempt to eliminate the target card.
  • Your opponent may choose to counter-attack by playing one of his/her own army cards.
  • If the counter-attack is higher than your army card, then the counter-attack is discarded, and each of the stacked armies are added to the opponent’s wall cards.
  • Otherwise, both the counter-attack and the stacked armies are discarded.
  • Repeat until you run out of army cards.
  • Replace all face-up shield and wall cards with face-down cards.
  • Replenish your army deck by flipping the top card from the main deck. If it is a face card, add it to your shields. Otherwise, deal yourself the number of cards indicated into your army deck.
  • Play continues until either player has run out of wall cards. The other player is declared the winner.

12 Games in 12 Months #OneGameAMonth

OneGamePerMonth

It’s mid-December, which means people are remembering their New Year’s resolutions and rushing to accomplish them before 2013 rolls around.

Last year, I managed to release the Stop That Hero! alpha after many months of delay. This year, I similarly managed to get the next update out a few months ago after many months of delay, and it still hasn’t been ported to the Mac. Otherwise, I have a couple of Ludum Dare games under my belt. One of my aspirations is to be a prolific game developer, and this is not a good track record.

Ludum Dare has three main compos during the year (one is this weekend!), but each month in between features a miniLD with custom rules by whoever is hosting. I have been considering making it a goal to participate in each of these miniLDs if only to get 12 games in any given year.

Chris Kaitila, aka McFunkypants, wrote 12 games in 12 months about his experience in the last year attempting to make at least one game a month, so it seems I’m not the only one with such aspirations.

I set out this year to prove to myself that not all game projects need to stretch on for months or years. It was a battle against the featurecreep and code bloat that I’d suffered from for years as an indie gamedev. I’ve started so many more games than I’ve finished in the last 20 years.

From assembly language “hello worlds” to BASIC choose-your-own-adventures without an ending. From to Turbo Pascal Tron lightycles games, to Visual Basic prototypes so woefully buggy and half baked they weren’t even worth backing up. From unpolished (but complete!) C++ openGL shooters with only one level to Adobe Director (shockwave) horse-racers with no finish line. From php sports simulators with broken AI to html4 multiplayer chat worlds with server problems.

Looking in my Projects directory, I see that my unfinished 0h Game Jam about a horse race with no finish line. Hmm.

Now, Kaitila has a broader range of experience with tools and engines than I do. I could probably stand to get outside of my C++/SDL comfort zone, but the risk is taking the time to learn something new versus using what I know to work on games.

But he found that it’s easy to get sucked into a never-ending project, one that quickly stops being fun to develop, and so becomes one that never gets finished. I’m sure we’ve all been there. There’s a lot of discipline involved in game development, which isn’t obvious to anyone who hasn’t done it before.

So what can you do? Reduce scope! But feature creep is always a problem. Set short deadlines! But projects always have a way of taking more time than you planned.

Kaitila’s answer to both: game jams.

Instead of getting involved in a long marathon of game development which might force you to choose between your health/family/friends and your project, you run little sprints. Ludum Dare’s 48 hour compos and miniLDs are perfect. There are also other game jams throughout the year, such as Meaningful Game Play Game Jam and 0h Game Jam held during a missing hour due to Daylight Savings, so there are plenty of options.

Like daily workouts, each game project made me stronger. Faster. Better.

You can do this too. Challenge yourself to make a game a month this next year. Let this be your new year’s resolution. I’m going to do it all again in 2013. One game per month, on average, and a dozen finished products by the end of the year.

I’m issuing a challenge to all my gamedev friends: join me in the epic quest. It CAN be done. You don’t have to be hardcore, insane, or obsessed. Join me in the gameamonth challenge. We can help encourage each other.

If you have a Twitter account, you can sign up for the One Game A Month challenge. It’s like a game for game development. You get XP for each new game you post, and people who sign up before January 1st get 100 early adopter bonus points.

I’m in. Are you?

2012 Ludum Dare Gift Exchange

The Ludum Dare Gift Exchange is in its third year, and this time I’m joining in.

The 2012 LD Gift Exchange is kind of like a Secret Santa, but it involves the international Ludum Dare community, so it is very likely that you’ll be shipping a package to the other side of the world, or at least somewhere you can’t easily ride your bike to.

Here is the quick timeline:

  • subscribe to the event
  • go shopping. Buy a present from your local area that you think other people overseas might like, because they can’t get something like that over where they live.
  • Pack it all up
  • Wait for your email with the address of the fellow person you will send the present to
  • Go to the nearest post office and send the package overseas
  • Wait until your very own overseas present arrives and be happy

It’s fun seeing all of the interesting deliveries get opened, with pictures documented online.

The 2012 0h Game Jam

For a lot of people in the world, it is time to set the clocks back an hour. Thanks, Benjamin Franklin.

During the daylight time change, there’s an hour between 2AM and 2AM on Sunday, but due to the fact that it looks like no hours have passed, the question remains: can you make a game in 0 hours?

You can check on the hashtag #0hgame to see how development has gone around the world. Europe has finished their 0h Game Jam. You can see completed games at http://0hgame.eu/games.php. In 0 hours, you can expect some simple yet off-the-wall stuff to be made.

The “keynote” is a bit odd as well:

I’m getting ready for 0h game development by seeing Wreck-It Ralph tonight. Even if it doesn’t help provide any inspiration, it should be a fun time with friends.

Are you participating? How are you preparing?