Crow's Next by Gabriel Levi (glevi)

In Crow's Next you take on the role of lookout on a ship. Armed with only a telescope, it is your job to spot and identify pirates!

Goal

In each round 10 ships will spawn in the distance. 9 of these ships are innocent dutch sail boats, and 1 is an evil pirate ship. The goal is to identify the pirate ship, using your telescope. You get 1 point for each pirate ship identified and sunk, and you lose one point for each dutch ship sunk. Whenever the pirate ship is sunk all the ships disappear and respawn. Your ultimate goal is to get points. The ships will move faster as you accumulate more points.

How to play

You move with wasd (w-forward,s-backwards,a-left,d-right)

You look around with the mouse

You aim the telescope with the mouse with the left mouse button pressed

You can rotate the telescope around the crow's nest with the mouse with the right mouse button pressed. Alternatively you can rotate with the left or keys.

You can zoom the telescope with the up and down keys

Use the telescope to identify the pirate, and then press the number that is shown above it to sink the pirate. Pressing the wrong number will sink the wrong ship and you will lose a point. You can weigh that penalty against the pleasure of sinking the dutch.

Method

The telescope is implemented by rendering to texture. You can do this by clearing the back buffer, drawing to it from the telescope's point of view, copying it to a texture, clearing it again, drawing to it from the player's point of view, and then finally displaying it. The advantage of this method is it is easy. The disadvantage is that you cannot render anything larger than the size of the back buffer (which is the resolution of the window). Zooming in and out is performed by making the field of view smaller and larger. This texture is then mapped to the telescope's lens.

The telescopes aiming scales with the zoom, which makes it easy to track a ship at a high zoom. Moving the telescope around the edge of the crow's next does not scale, which makes it easy to go from ship to ship. The telescope will get a bit longer as you zoom it. All this stuff is really easy to do with a bunch of opengl transformations. The tricky bit was getting the camera for the telescope in the right place and facing the right way. I placed the camera on the far lens of the telescope (the end you don't look into).

The water is a repeating water texture that I found here The ships I found here and here

The numbers for the ships are textures that I extracted from a picture found here. I did this because Font.hpp (as far as I can tell) just supports text in 2D, and I needed it in a 3D setting

The world does not have lighting. I experimented a bit with it, but it makes everything a lot more complicated. Without lighting your own ship lacks depth, but I thought it was a fine trade off between that and going crazy

Novelty

This game involves manipulating two viewpoints, which is a pretty unstandard thing to do due to its difficulty to control. While many games have camera, binocular, or telescope modes, where your viewpoint is replaced with another viewpoint, rarely do both coexist at the same time. In order to succeed, you need to use what you as the player can see AND what the telescope can see. As far as I can remember from the games I have played, this is new. Playing with the telescope is just fun, and my friends thought it was really cool =D

Results

This game came out really well. There is a bit of a learning curve to the controls, but once you get used to it you can sink the pirates pretty quickly. The controls for the telescope feel good, and it behaves and looks right. I am not very happy about how SDL grabs the input. Once it got glitchy, and stopped listening to the keyboard so I couldn't quit. I am pretty sure this is a bug with SDL, though.

Anyway, I really think you'll like this one.