title screen

Ookoobah

A puzzle/dexterity game about a photon lost inside a quantum computer. Your goal is to guide the photon to the terminal pad after activating eight 1-bit flip-flops. But the photon is very elusive and cannot be directly controlled. And hence you are given a set of block of various types that effect the photon's direction in some way.

Controls

The game is mainly controlled via mouse. Pick a block type from the menu on the left-hand side and place into the game field using a left mouse button. To delete a placed block, right click on it. If you use touch-pad, you may find left click + Shift or numeric keyboard key more handy. You cannot delete a level block, one that you did not place yourself.

Includes a level editor.

Watch the trailer

Source code: https://github.com/vickenty/ookoobah

Awards


Most Obedient Photons
Presented by paperstarships

Give this entry an award

Scores

Ratings (show detail)

Overall: 3.5
Fun: 3.4
Production: 3.8
Innovation: 3.4

5% respondents marked the game as not working.
Respondents: 17

Files

File Uploader Date
ookoobah-1.1.zipfinal
Fixes crashes on Windows
kent_turbo 2014/05/18 11:56
ookoobah-editor.final.png
Built-in level editor
mvuets 2014/05/18 10:13
ookoobah.final.png
In game screenshot (final)
mvuets 2014/05/17 23:11
menu-bg.png
title screen
kent_turbo 2014/05/17 22:53
ookoobah-1.0.zipfinal
version 1.0
kent_turbo 2014/05/17 22:52
ookoobah-1.0.tar.gzfinal
version 1.0
kent_turbo 2014/05/17 22:52
ookoobah.5th-day.wip.png
5th day, work in progress
mvuets 2014/05/16 06:35
ookoobah.4th-day.wip.png
4th day, work in progress
mvuets 2014/05/14 21:34
ookoobah.3rd-day.wip.png
3rd day, work in progress
mvuets 2014/05/13 22:52
ookoobah.2nd-day.wip.png.png
2nd day, work in progress
mvuets 2014/05/13 09:39
ookoobah.1st-day.wip.png
1st day, work in progress
mvuets 2014/05/11 22:47

Diary Entries

We've done it! Meet Ookoobah

Howdy PyWeek'ers!

We are glad to present to you our game Oookoobah.

It's a puzzle/dexterity game about a photon lost inside a quantum computer. Your goal is to guide the photon to the terminal pad after activating eight 1-bit flip-flops. But the photon is very elusive and cannot be directly controlled. And hence you are given a set of block of various types that effect the photon's direction in some way.

Requirements

The game was written and tested in Python 2.7 under GNU/Linux and MacOS X. Besides Python core libraries the game depends only on Pyglet, which is already included in the bundle. Unfortunately, we could not test the game under Windows, but it should just work. If you face any problem with running our game, please let us know.

Controls

The game is mainly controlled via mouse. Pick a block type from the menu on the left-hand side and place into the game field using a left mouse button. To delete a placed block, right click on it. If you use touch-pad, you may find left click + Shift or numeric keyboard key more handy. You cannot delete a level block, such that were not placed yourself.

Key Action
Left mouse button on an empty grid cell Place a selected block on the grid.
Left mouse button on a placed block Rotate the block.
Left mouse button + Shift; or right mouse button Delete the block.
Arrow keys Move the camera around the grid.
Mouse wheel Control camera zoom level.
Digit keys 1 to 9 Menu item shortcuts.

Some gory details, credits, and a little story

We are the group of three Perl developers, none of which is a gamedev: kent_turbo, mvuets, and che. kent_turbo has been participating in PyWeeks for quite a long time and has got quite a good experience in making games with a help of Python. mvuets has never programmed in Python before, but always wanted to try it out in real, so PyWeeks seemed to be an excellent opportunity. che joined us as he was interested in Python and gamedev.

When we had settled on the game idea, we couldn't think of a good name and put this decision off. But we had to have some reference codename for the project, so we resorted to a passwdgen-like program and ookoobah was what we got in response. Sadly or gladly, but we never got around to actually pick a proper name. Ookoobah stuck and became our game name. So in case you wonder what Ookoobah is, it means nothing. But if it does mean anything to you, please let us know, we are curious (-:

All of us have a full-time job, so we were not able to work on the project full day all the week through. Despite that I think we managed to achieve quite a good result. I personally am very happy!

Since the very beginning of the challenge we were using GitHub to coordinate all our code changes. If you are interested, feel free to check it out here: https://github.com/vickenty/ookoobah.

A few words on who did what:

kent_turbo
project lead, game as a whole, opengl renderer, gloss, sfx
mvuets
game idea, game core/model, food supply (-:
che
opengl renderer, level loading and saving, level progression, main menu

Thank you!

We hope you'll enjoy our little pet. Looking forward to hearing feedback from you.

P.S. I'll make and upload a demo video of the gameplay once I figure out how to compile and run a screencast software on my laptop q-: Stay tuned.

4 comments

Batteries included: the level editor is built-in

kent_turbo just reminded me that Ookoobah is shipped with a level editor! We actually used it to create the content for the game. It's just hidden by default. But here is how you can invoke it...

Starting Ookoobah level editor

To enable the editor, pass an additional command-line argument specifying the level name. If a level with the given name does not exist, you'll start with an empty grid and could make a level from scratch. If the level exists, you could amend it.

Create a new level:

    ookoobah$ python run_game.py my-new-kickass-level

Edit an existing level:

    ookoobah$ python run_game.py beginning

Once invoked, you'll find a new item "Edit" in the main menu. That's the editor.

Note: the argument specifies a level name, not its file path. Actual level files are available as $GAME_DIR/data/$LEVEL_NAME.level

Using the editor

It looks pretty much as the game itself. Except now you have more options. Namely:

  • you can save a level (of course),
  • have access to an infinite number of all possible block types,
  • and can specify which blocks are locked (level blocks), and which will be moved from the grid to a player's inventory.

Some levels have an optional introductory text that is displayed when a player enters a level for the first time. This text is stored in a file $GAME_DIR/data/$LEVEL_NAME.level.txt and may be edited separately.

The editor wasn't considered an official part of the game, but rather a tool that naturally evolved during a development process. Therefore it may have bugs that we consider low priority and didn't fix. Please excuse us (-:

Playing new levels

To play your new level, simply pass its name on a command-line as shown above and select "Play" in the main menu. If you want to include your level in the standard series, you'd have to add it to the tuple LEVELS in the file ookoobah/game_mode.py.

Contributions welcome!

During the challenge we were very focused on the game itself, and could find time for level creation only on the last day. I should say: coming up with level ideas is hard! Nevertheless we made 15 levels, including 6 tutorials, which should suffice for starters.

But you are absolutely free, even encouraged, to create your own. Please do and share them with everyone. Looking forward to seeing your work!

1 comment

Ookoobah v1.1-hotfix: Windows crash fixed

Version 1.0 was reported to not work on Windows. Meet a fixed version 1.1: https://pyweek.org/media/dl/18/latitude11/ookoobah-1.1.zip.

Add a comment

Ookoobah demo video published

As promised, here is a short screencast of the Ookoobah gameplay: http://youtu.be/aiXntST983E.

3 comments