Saturday, February 25, 2006

Puck

Name: Puck
Author: Kengine Gaming
License: Freeware (I think)
Website: http://www.kenginegaming.com/puckpage.php

The best puzzle games are those with a simple idea where the depth comes from the interaction of the game elements and quality of the puzzles. Puck was recently released and is a wonderful example of this. Puck is a very well put together game: a simple original idea, good level design, nice graphics that do not get in the way, and pleasant audio. It has a certain polish and finish which you rarely see in freeware games. I highly suggest everyone give Puck a play.



The objective in Puck is to get the puck into the hole. Once you hit "solve!", the puck starts its journey. Its initial heading is given by the arrow at the bottom of the screen. When it hits an angled wall, it changes direction 90 degrees and continues. When it hits a straight wall, it bounces backwards. You have to place those angled walls to guide the puck to the hole. If you could just pick up the angled pieces and place them, the game would be way too easy. Instead, you move the pieces around as if they were on ice. Once you start a piece moving, it keeps moving until it hits a wall or another piece. You have to carefully plan ahead so that all of the angled walls end up in the correct locations.

There are a few other game elements. There are square pieces which you get to move around. They can be used to fill in voids or block for other pieces. There are green goo tiles which slow down the puck and blue acceleration tiles which speed up the puck. If the puck's speed drops to zero, it will stop and not make it to the hole. And there are, of course, teleporters. That is about it. Very simple, very clean.

The level design is excellent. The early "tutorial" levels introduce the game elements nicely. The difficulty of the levels smoothly increases with the final "puckmaster" levels being quite hard. I really enjoyed playing through the 45 levels. Puck comes with a level editor, and there is mention of a level design contest on their website.

I have only two minor quibbles with Puck. First, I wish the program checked for cycles. You can send the puck into an infinite loop and have to manually stop it. Second, I wish they clearly stated the license under which Puck was released. I believe that it was released as freeware, but that is not explicitly stated anywhere.

Friday, February 17, 2006

Puzzle Bunnies

Name: Puzzle Bunnies
Author: Jimmy
License: GNU Public License
Website: None

I just released a beta version of my entry to the Contest Caiman Easter 2006. So, if you have ever felt that I gave your favorite game a bad time, now is your time for revenge. My entry is called Puzzle Bunnies. It is an amazing, wonderful, and thoughtful puzzle game in which the graphics are ... primitive, the interface is ... clunky, and the sound is ... nonexistent. Um, I did say it is a beta, didn't I?

The objective of a Puzzle Bunnies level is to safely guide each of the bunnies to a rabbit hole, along the way picking up all of the Easter eggs. You also have to avoid bad things like water, wolves, and hawks.



The bunnies will normally just march straight ahead. To guide them, you get to place tools on the board. The arrow tool causes bunnies to change direction to that of the arrow. The rotate tool causes bunnies to rotate 90 degrees. You can choose either rotate left or rotate right. Finally, the hop tool (that is supposed to be a pogo stick, but one friend called it a syringe) causes bunnies to hop over the next object, if allowed. You have to carefully place the tools to collect all the eggs and make it home safe and sound.

There is one more thing which you have control over: the turn rules for the bunnies. When a bunny runs into a mountain it turns. You get to set each bunny's turn rule: either turn right, turn left, or u-turn. Once you place your tools and set the turn rules for the bunnies, hit go and see if everything works out as you expected.

There is a twist which make the game a little more interesting. Most games like this are played on the surface of a torus. Meaning that if you go off the top, you come back on the bottom in the same column and vice-versa. And if you go off the left or the right side, you come back on the other side in the same row. I decided to mix things up a bit and have Puzzle Bunnies be played on the surface of a Klein bottle. The top and bottom work the same, but when you exit on the left or right, you come back on the other side in a different row. The mapping is shown with the letters A to P on the board.

There are only 50 levels. I plan on increasing that a bit in the final 1.0 release, along with animation, sound, etc. I have also released a level editor. If you want to help me out a bit with levels, I would appreciated it. You can get a copy of the game at Camain Free Games and see want other people are saying about Puzzle Bunnies. I have also uploaded a copy to FileFactory. And you can always email me with a request.

There are several other similar games out there. The inspiration for Puzzle Bunnies came from Puzzled Sheep. This is a web based game. While coding up Puzzle Bunnies, I ran across two other similar games: Driver's Dilemma and RoboMen.

I hope you enjoy playing Puzzle Bunnies. I will keep you informed when version 1.0 is available.

Friday, February 10, 2006

RoboCode

Name: Robocode
Author: Mathew Nelson
License: Open-Source Freeware
Website: http://robocode.sourceforge.net/

This is the fifth and final entry in my programming logic games series. This week's entry is on Robocode. In this game, you have to program a robot in Java. You program how it moves and turns. You program how it hunts for opponent robots. You program how it turns its gun and fires. Your program can be simple or as complicated as the Java Virtual Machine allows.

The Robocode API is quite rich. There are movement commands like ahead() and turnRight(). There are weapon commands like turnGunLeft() and fire(). There are routines to help you track the other robots such as turnRadarLeft() and getRadarHeading(). There are also events such as onHitByBullet() and onScannedRobot() which allow you to send special instructions to your robot when these events happen. And there are many, many more. Here is a very simple Robocode robot program.


Once your robot is ready. You can start a battle to see how it fares in competition. Robocode comes with several sample robots to compete against. You select which robots are to battle and let them go at it. Here JimmyBot is about to do some damage to TrackFire. You get to see in a very visual way how well or poorly your program is doing.


Obviously, there is steep learning curve to Robocode. First, you have to learn Java if you do not already know it. Second you have to learn the Robocode API. And to do well, you have to learn the physics of the Robocode world: how fast do robots turn and move, how fast bullet fly, and how often can you fire. So, this game will not appeal to everyone, but if you have done some programming or would like to learn, I think Robocode is well worth trying.

With some practice, you can program a robot which can beat all of the sample robots which come with the game. If you need a little help, there are several on-line resources available. One of the best is the RoboWiki. The on-line Robocode following is tremendous. Once the sample robots lose their challenge, you can move on to robots written by other humans, look in the Robocode Repository for some. And if you get really good, you can try your hand at some competitions. My one hint to Robocode newbies is to use setColor() to change the color of your robot when it enters different parts of your program. I found this helps with the debugging.

There are two aspects to Robocode which I really like. One is that it encourages writing efficient coding. If you waste time doing some complicated computation, the other robots are going to eat you up. The other is to program a top notch robot, you have to use some sophisticated math and computer science techniques.

There is one thing about Robocode which I do not like: the built in editor. It is fine for changing a line or two, but not for any heavy duty coding. I wish there was a way to use a real editor, like emacs, within the game.

Robocode is really just the latest version of a series of progamming robot games dating back to the days when I had hair. In the 80s, there was c-robots and then p-robots in which you had to program your robots in C and Pascal respectively. I do not know if these are still playable today, but remember spending a lot of time with p-robots. More recently (the 90s), C++-robots came along. I am willing to bet that if do a search for foo-robots where foo is your favorite programming language, you will probably find it.

There is one last game which I want to mention, Robot Battle. This is very similar to Robocode. It was made freeware a couple of years and has a strong following. I have not spent much time playing with it, but it looks pretty good.

One last thing (really!!), Electronic Arts is sponsoring a contest to program the AI for their Tank Wars game. It kind of looks like EA is trying to get people to do their programming for them for free. Philosophically, I would suggest people work on open-source projects, but this might be a way to get yourself noticed.

Saturday, February 04, 2006

Mind Rover

Name: Mind Rover: The Europa Project
Author: CogniToy
License: Commercial
Website: http://www.mindrover.com/

This is part four of five in my series on programming logic games. This week's game is Mind Rover, a commercial game which came out in the late 90s. Mind Rover is a fun and challenging game in which you build and program a rover to complete one of the many the scenarios. The scenarios range from winning a race to defeating an opponent rover in battle.

There are three phases to completing a scenario. The first phase is to design your rover. You pick a chassis type: hovercraft, wheeled, or treaded. Load it up with components such as motors, sensors, and weapons. There are limits. Weight, point, and space limits restrict how many components you can load onto your rover. You have carefully optimize your selections to meet the scenario objectives.

The goal of this scenario is to destroy your opponent's rover. I went with the medimum hovercraft chassis and put one engine on the lower right. This causes my rover to just spin around. This is not very subtle but it gets the job done. Next I put sensors on each side to detect the opponent. Finally, I needed some weapons: lasers on each side and a rocket launcher both front and back.


In the second phase, you program your rover. This is done by wiring your components together allowing one to trigger or effect another. In the example, I set a wire between the front sensor and front rocket launcher. If the opponent is sighted, this wire causes a rocket to be fired. Besides adding wires, you can add logical components such as AND, OR, ADD, or COMPARE. Then there are timers and waypoint sensors. There is even a randomizer which I never have had need to use. This allows you create fairly complicated programs for your rover.


The final phase is the running the scenario. Just hit the go button and watch the 3D action. For each scenario, there is a rover designed by the CogniToy for you to compete against. Here is an action shot of my rover getting a laser shot on their rover. Once you defeat the built in rover, you can take on your friends.



Mind Rover comes with 22 scenarios including 5 tutorial scenarios. You can also download some additional scenarios. I found this game to be a difficult game. It has a high frustration factor. You have to be detail oriented to understand how each component works and interacts with others. But the reward is worth the effort.

Despite being an older game, Mind Rover can still be purchased. Patched to 1.08, it runs just fine in WindowsXP. One wonderful thing about it being an older game is the manual. It runs 250 pages and completely explains every aspect of the game. You just don't see manuals like this any more. It is a shame.

If you want to get a feel for the game, there a java version called MiniMindRover. If you want play with a hardware version, there is LegoMindstorms. You actual have to wire components. This is one of the best geek toys ever.