Dambuilder chaos pt 2 (day 5)

Dam Builder

A team consisting of Martijn and Felicia. Building a game involving the building of dams. The team name is 'faraway', but better put the game name in here.


Give this entry an award


Ratings (show detail)

Overall: 3.5
Fun: 3.2
Production: 3.3
Innovation: 4

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


File Uploader Date
Dambuilder - buildout version with PyGame, ODE, PyODE included. See INSTALL.txt
faassen 2007/04/07 22:09
Dambuilder 1.0 Windows version
faassen 2007/04/07 21:34
Final source entry for dambuilder
faassen 2007/04/07 21:17
Dambuilder 0.9.1 with included fonts
faassen 2007/04/07 14:05
Improved windows version which hopefully has working fonts
faassen 2007/04/07 13:54
Dambuilder 0.9 windows exe version
faassen 2007/04/07 13:07
Dambuilder 0.9 sources
faassen 2007/04/07 12:58
Dambuilder chaos pt 2 (day 5)
faassen 2007/04/05 23:27
Dambuilder chaos!
faassen 2007/04/05 23:27
dambuilder day 4 screen shot 2
faassen 2007/04/05 00:19
Dambuilder day 4 screen shot 1
faassen 2007/04/05 00:18
day 3 screenshot
faassen 2007/04/03 21:31
dam builder, end of second day
faassen 2007/04/03 01:08
Day 1 screenshot
faassen 2007/04/02 00:54

Diary Entries

End of day 1

End of day 1:

  • got some form of water flowing using PyODE.
  • got water level simulated
  • investigated erosion, but ran into a few snags.
  • Fleshed out a plan for graphics

Hopefully in day 2

  • Start of actual graphics production
  • Get an agent moving around
  • Get a workable erosion going
  • Allow multiple water falls and connect it to water level

Add a comment

End of second day of working

What was hoped for yesterday that was delivered today?

  • Felicia has started drawing some graphics. We have some early versions now, not yet integrated with the game.
  • We have a very basic agent moving around. He can't climb the wall yet though, nor swim.
  • We gave up on nice automatic erosion behavior for now. We'll fake it.
  • Multiple water falls hooked up to water levels are now a reality.

Overall, the simulation of the waterlevels, dams and water flowing through it all is a lot better. There is even support for multiple dams. This is theoretical however, as I haven't written any tests.

This brings me to the screenshot. It is not that much changed from yesterday, but underneath it does a lot more.

That brings me to doctest-driven game development. I'm actually writing doctests for some tricky areas in the game, and it has helped me refactor and debug quite a lot. Whether having reasonably well-factored code pays off in the short period of a week I'm not sure about yet. :)

What's next?

  • We really need to start getting our little player behaving correctly. I've already written some tested code to determine whether he is walking, swimming or flying, but this needs to be hooked up both to graphics and behavior.
  • We need to get our player to be able to climb walls!
  • Hopefully we can get the basics of dam construction working.

Add a comment

we got a basic game

The beaver (yes, that's what it is) now acutally looks like a beaver. He can walk around, swim, and climb the dam. He can go in and actually fix leaks. It all needs endless tweaking but we *do* have the basic elements of a game here.

1 comment

end of day 4

End of day 4! A lot of progress was made, but there's still endless amount of work to be done too. Oh no! First some screenshot goodness:

This is starting to look a lot nicer. It has a lot of work done underneath. Among many other things:

  • Many more animations were made and integrated
  • pictures of materials were made and are shown in the game now.
  • leaks show a lot more prettily
  • the screen now scrolls around the beaver
  • the beaver can build up the dam
  • the beaver can fix leaks in the dam with a material of choice.
  • we have the beginnings of a HUD display

Tomorrow we have to focus on integrating the last major gameplay elements and then we can start the endless tweaking of the game.


End of day 5

Let's lead in with our regular dambuilder screenshots:

What this shows are various new features:

  • We got enemies. That is, birds and fishes that for some reason like to damage the dam you're trying to maintain. Only the birds succesfully damage the dam after today, but the fish will gain this capability tomorrow.
  • There are various resources (trash items) floating in the water. You can go and get those and using a conversion device (we see it in the first screenshot at the bottom left, but it's probably going to change) you can transform this into the material you need.

Not visible are countless, countless tweaks.

Testing status: discipline of maintaining code has gone down as tweaking progress and I've been engaging in more hackery and copy & paste programming. The existing tests still work, but I've extended them little further today.

I do think they are still of value though. They helped me getting the core behavior of the game correct faster than I would have when looking at the screen each time, and they saved me several times as I broke stuff. Now that I'm programming enemy AI and tweaking gameplay, the scope for test-driven development is somewhat less, especially as I'm in an awful hurry. :)

Still, lots of cleanups can now be made. I hope to find time to clean this up after the contest, as the simulation currently has untapped (and not fully tested) potential, such as support for multiple dams.

Tomorrow I need to focus on the following things

  • Game over when waterlevel on land is too high.
  • High score screen
  • Startup screen
  • Fish should also create mayhem
  • Windows installer. I aim to have at least a Linux source release and a windows download. We'll see how far I get, though.

If any time should remain, there are countless tweaks I still want to do. I don't expect to have a lot of time on saturday, so most of it will have to happen tomorrow.


uploaded test source version

I've just uploaded dambuilder 0.9, a first source version of Dambuilder. See its included INSTALL.txt for requirements.

Next I will upload a Windows version. Then after a bit more play testing, I will upload final versions.

Add a comment

Dam Builder 1.0

I've just uploaded Dam Builder 1.0 to the site, my final submission. We (team Faraway) hope you will enjoy it! (and that it will work on your computer)

Uploaded were a source version and a Windows version. The windows version contains a dambuilder.exe file and you should be able to play Dam Builder without any further installation. The requirements for the source version are documented in the INSTALL.txt.

For Linux users who are interested, I will still be uploading a 'buildout' version that makes building the recent versions of PyODE and ODE (required for Dam Builder) more easy.

There is tons of stuff I would still like to do, but there is no time. I guess that's good, as it gives me something to do after the competition!

It was an intense week, but we had fun. We made an actual game! Now the fun starts in reviewing all the other games.

Add a comment

Performance note

There seems to be a performance problem as you near the end of the game. If you then start another game from the main menu, the bad performance continues into the next game. I have a theory as to why this is, but I'm on a break from dam builder code for a short while, and it wouldn't help the final entry anyway.

I would request reviewers that want to play more than one game to restart the whole app after each game you played, however. Thanks!

1 comment

ODE note

I've just noticed Dam Builder has been listed as "not working in Linux" on this page. This is rather frustrating as the whole game was developed under Linux.

The note is that the game crashes with the following error:

File "src/dambuilder/physbody.py", line 14, in Ball
j = ode.Plane2DJoint(ode_world)
AttributeError: 'module' object has no attribute 'Plane2DJoint'

This is due to a version of ODE/PyODE that lacks Plane2DJoint support.

Unfortunately, this version of ODE/PyODE does not appear to be shipped yet in typical Linux distributions. Since I understand full well people don't want to mess about with installing new versions of library dependencies as root, I've taken a lot of care to include a 'buildout' version which can build and install these (and PyGame) as a user, on Linux. I've used this myself during development.

Download the -buildout version of the game, and read the section "Extensions that can be built with Buildout" in the INSTALL.txt. Comment this entry should you have any problems.

I hope that this extra hassle doesn't stop people altogether from trying out this game under Linux. I did do my best to help. :)

Add a comment

Performance fix

This was already there, but hidden in a comment, so just making sure it's seen:

I've fixed a rather bad performance problem in the later game stages with a 1 line fix that I wouldn't want to withhold from anyone. Add a line saying "leak.clear_ode()" just below line 78 in src/dambuilder/dam.py (in the "if leak.rate

This was already there, but hidden in a comment, so just making sure it's seen:

I've fixed a rather bad performance problem in the later game stages with a 1 line fix that I wouldn't want to withhold from anyone. Add a line saying "leak.clear_ode()" just below line 78 in src/dambuilder/dam.py (in the "if leak.rate

Add a comment

Dam builder: Thanks everyone!

Thanks everyone for reviewing our game! Thanks also to our host, Richard, for organizing such a great contest. Felicia and I were happy with the result of our efforts, and are quite pleased with where we ended up in the rankings. As I had hoped we did well on innovation. There is definitely a lot of game play work that can be done after this, but I'm glad to see people enjoyed themselves!

Especially amusing are the expressions of animosity against our birds and fishes. We hope to add some more annoying animals.

One bug that got reported a few times is the beaver ending up in the top left corner (after a collision?). I haven't seen this problem myself so I'm quite interested in finding more about this. People who had this bug, did you have this with the Windows version or on Linux? If on Linux, which version of ODE/PyODE were you using?

The game source code is available on google code now, here. I hope some people will be interested in joining the project for the post-pyweek release that I hope to bring out in a while.

1 comment