Improbable Rocket-Propelled Dinosaur Scientist

This is probably one of the best game titles I have come up with in Pyweek.

This Pyweek I had an interesting idea right from the beginning but I had very little time. I was forced to rush everything in at the last day. There are many things missing from the original concept, as usual.

The concept comes from "nine times out of X". There's a story about a scientist who works on the Improbability Device and becomes a dinosaur after a massive failure and then has to rocket towards the device to fix it. On the way to the machine, improbable events may happen, but unfortunately I had time to implement only a few. The dinosaur scientist can alter the probability of these events by picking up atoms that were released from the failure of the device.

Only after I finished the game I realized there was a flaw in the design: there's some chance that the player makes things too improbable to happen, so nothing ends up happening in the game, which means the player might get bored. I tried to fix it at the last minute, but I couldn't do much besides tweak a few parameters, and I'm not sure that helped much.

I started this day thinking I might not be able to finish something, and I still had that feeling in the middle of the day, but there it is to prove myself wrong. The game could use a lot of work, but at least it's playable. I hope you enjoy the game. As usual, feedback is very much appreciated. :)

(log in to comment)

Comments

I really like the probability concept, and the game is fun. I died every time a flock of pigs came along; once I started picking up the white atoms, I stopped seeing them. I think it needs to be possible to survive the pigs - right now I either die immediately, or I never see them because I've probabilitized your way out of it. Perhaps the answer to your design issue is to make the "good" probabilities also complicate gameplay: you get less pigs, but move faster, or something so it's a trade-off.
 
I guess I made a mistake there. When I was playtesting (at the last hour), I had the feeling the game was too easy, but I guess it was because I was playing it "right", by "probabilitizing" events out. My initial reaction was, "hmm, this game needs to be harder", so I tweaked the pigs to be harder (originally they were fairly easy to go through).

That's actually quite a nice lesson there. Balancing is not only about difficulty, it's also about how you play the game. This game seems to be too hard if you don't put enough effort in working on the atoms, but somewhat straightforward and uneventful if you do. My mistake was trying to fix the latter by making the former even harder. This shows that's important to have others test the game, which is something I never do in Pyweek due to lack of time.

As for more probability events complicating gameplay, I indeed had a few more in stock that would twist things around, but I didn't have time to implement them. The "many pigs" and "long traffic jam" events were only added because they were very quick to implement.
Seeing a lot of these:

Fatal Python error: Segmentation fault


Traceback (most recent call first):
  File "/usr/lib/pymodules/python2.6/pyglet/font/freetype.py", line 154 in render
  File "/usr/lib/pymodules/python2.6/pyglet/font/base.py", line 378 in get_glyphs
  File "/usr/lib/pymodules/python2.6/pyglet/text/layout.py", line 999 in _get_glyphs
  File "/usr/lib/pymodules/python2.6/pyglet/text/layout.py", line 870 in _get_lines
  File "/usr/lib/pymodules/python2.6/pyglet/text/layout.py", line 894 in _update
  File "/usr/lib/pymodules/python2.6/pyglet/text/layout.py", line 960 in _init_document
  File "/usr/lib/pymodules/python2.6/pyglet/text/layout.py", line 971 in on_insert_text
  File "/usr/lib/pymodules/python2.6/pyglet/event.py", line 340 in dispatch_event
  File "/usr/lib/pymodules/python2.6/pyglet/text/document.py", line 425 in insert_text
  File "/usr/lib/pymodules/python2.6/pyglet/text/document.py", line 285 in _set_text
  File "/usr/lib/pymodules/python2.6/pyglet/text/__init__.py", line 269 in _set_text
  File "/srv/dc-downloads/PyWeek-12-finals/Tee-py12/IRPDS-0.1/IRPDS/game.py", line 418 in update_text
  File "/srv/dc-downloads/PyWeek-12-finals/Tee-py12/IRPDS-0.1/IRPDS/game.py", line 405 in update
  File "/srv/dc-downloads/PyWeek-12-finals/Tee-py12/IRPDS-0.1/IRPDS/game.py", line 129 in update
  File "/usr/lib/pymodules/python2.6/pyglet/clock.py", line 303 in tick
  File "/usr/lib/pymodules/python2.6/pyglet/clock.py", line 700 in tick
  File "/usr/lib/pymodules/python2.6/pyglet/app/__init__.py", line 187 in idle
  File "/usr/lib/pymodules/python2.6/pyglet/app/xlib.py", line 93 in run
  File "/usr/lib/pymodules/python2.6/pyglet/app/__init__.py", line 264 in run
  File "/srv/dc-downloads/PyWeek-12-finals/Tee-py12/IRPDS-0.1/IRPDS/__main__.py", line 8 in main
  File "run_game.py", line 5 in <module>
Segmentation fault
Debian wheezy, pyglet 1.1.4.dfsg-1
OK it seems that changing the font fixes it. DejaVu Sans works well on Debian. http://pastebin.com/V8U29Dss