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.

(log in to comment)

Comments

Got a wee bit of a problem running the game on windows:

C:\pyweek18\ookoobah-1.0>python run_game.py
Traceback (most recent call last):
  File "run_game.py", line 17, in 
    ookoobah.main.main()
  File "C:\pyweek18\ookoobah-1.0\ookoobah\main.py", line 158, in main
    Controller().run()
  File "C:\pyweek18\ookoobah-1.0\ookoobah\main.py", line 146, in run
    self.switch_handler("menu_mode")
  File "C:\pyweek18\ookoobah-1.0\ookoobah\main.py", line 72, in switch_handler
    self.handler = mode.get_handler(name, *args, **kwds)
  File "C:\pyweek18\ookoobah-1.0\ookoobah\main.py", line 52, in set_handler
    value.connect(self)
  File "C:\pyweek18\ookoobah-1.0\ookoobah\menu_mode.py", line 15, in connect
    self.init_opengl()
  File "C:\pyweek18\ookoobah-1.0\ookoobah\menu_mode.py", line 69, in init_opengl

    gluOrtho2D(0, self.window.width, 0, self.window.height, -1, 1)
TypeError: this function takes 4 arguments (6 given)

C:\pyweek18\ookoobah-1.0>python test_core.py
Traceback (most recent call last):
  File "test_core.py", line 14, in 
    """)
  File "C:\pyweek18\ookoobah-1.0\ookoobah\utils.py", line 23, in make_grid_from_
string
    grid = core.Grid()
AttributeError: 'module' object has no attribute 'Grid'
Wezu, please try version 1.1 that we uploaded recently, it should work on Windows too.
wezu, thanks for reporting! We pushed a change and released a fixed version 1.1: https://pyweek.org/media/dl/18/latitude11/ookoobah-1.1.zip Regarding test_core.py: it's a script for debugging the game core. It is know to be broken due to last minute dirty changes to the core. But anyways, it's unrelated to the game itself. Thanks!
It works now.