I’m pleased to present my entry to the RubyWeekend #3 game competition: Droplet. From the README:
Droplet is a small musical toy created by John Croisant in 72 hours over the weekend of June 26-28, 2009 for the third RubyWeekend game creation competition.
The theme of the competition was “A Tiny World”. The inspiration for Droplet comes from photographs that people have commonly described as “tiny worlds”: droplets of water, and the small plants and fungi that grow underfoot.
Initially, Droplet was going to feature both plants and creatures interacting in their tiny droplet world, but I abandoned plans for the creatures due to time constraints. So, what’s left is abstract, rainbow colored plants that sing when you tickle them!
The controls are simple:
- Left click anywhere on the edge of the droplet (the large circle) to plant a seed. The seed will gradually grow into a tree-like plant of a random color.
- Move the mouse cursor around near a grown plant to tickle it and make it sing. The faster and longer you tickle, the louder it sings. The sound each plant produces is randomly chosen from the “data/sounds/” directory.
- Right click the trunk of a plant to remove it.
- Click “Help / Credits” to view controls help and game credits.
- Press Escape to quit the game.
To run Droplet, you will need Ruby 1.8.6 (1.9 might work), Rubygame 2.5.2 (with SDL_gfx, SDL_image, and SDL_mixer support), and Gamebox 0.0.4.
- Plants have a limited number of generations, so they don’t start to slow everything down.
- Plant colors, branch length, and various other attributes are randomized per plant for more variety.
- You can rustle the plants by moving your mouse cursor around them. This makes them wave back and forth for a while, and will eventually make them “sing” louder.
- I made a custom method for drawing branches, which is a bit faster than
draw_line_s, and anti-aliased, but not as roundy at the ends.
- The algorithm for calculating how much you rustled a plant is a bit dodgy.
- Still no sound. I’m definitely adding that tomorrow, though. I’ve got a few chime sound loops prepared, and I’ll make some wind/pad loops too.
- I decided not to use Garage Band due to time constraints and because I wasn’t sure about licensing (since I’d just be making short samples). I’m using some nice chimes and pads from freesound.org instead.
- I need to a title and instructions and credits in the side bar.
- Maybe add a way to kill plants that you don’t want anymore?
All in all, though, it’s coming together well. 16 hours left.
A quickie progress update and screenshot of my RubyWeekend game, Droplet.
- You can click to make a new plant at the nearest point on the circle.
- The plants grow a bit when you press spacebar.
- The plants grow and create new branches based on rules.
- The plants are ignoring their color rules.
- The plants are “leaning”.
- The plants are jaggy and slow to draw (when complex). I’ll probably have to stop using Gamebox’s “thick line” method (draw_line_s), and either use regular lines (maybe antialiased) or roll my own code to draw branches. OpenGL would be really nice right now…
- The plant rules are a bit simplistic and rigid.
- No sound yet.
The contest period is nearly half over (39:30 hours left as of this writing). I’m going to try to fix the color and leaning issues, then head to bed. The focus tomorrow will be on sound/music.
Update 03:52: Fixed the color and leaning issues. Both were just stupid little mistakes. Here’s an updated screenshot:
I’m calling my RubyWeekend #3 game “Droplet”. I will not proceed to ramble about it to help my planning. And you get to read the results, you lucky person you!
- I’m setting aside the animals/people aspect for the competition. It’s just going to be about the plants.
- I’m going to use Garage Band’s built-in instruments to create the music sound effects for the game. I am in love with Garage Band.
- I’ll be using Gamebox. It seems pretty cool so far.
- Since the game takes place on the inside surface of a circle, I’ll need to do some trigonometry to calculate the positions and angles of plants around that circle. After a bit of thought on this, I’ve decided I’ll make a PivotActor that represents the center of the circle and contains the math code to calculate the positions of plants given an angle, and also calculate the point on the circle nearest to the mouse cursor.
I’ll update this post with more thoughts as I have them.
RubyWeekend #3 kicked off about 8 hours ago, and I’ve been pondering game ideas since then. The theme is “A Tiny World”. I was having trouble coming up with something, but I think I’ve finally got a solid base for a game. It’s still a bit vague, and I haven’t figured out how I’ll turn it into a proper game, with an objective and challenge and such. Right now it’s just kind of a neat idea for a toy. (Which, to be honest, I find more interesting to create, but I should at least try to make it somewhat game-ish for the competition.)
Continue reading RubyWeekend #3 Game Concept