nonogram solver

Devils Tower

Devils Tower

NOTICE: Depending on your CPU, it can take quite a while before the game starts (Black Screen). On my workstation it loads in about 4-5 seconds, but it could take a lot longer, depending on your CPU and the available SIMD instruction set. There is also a small chance of it getting stuck in an infinite loop while placing certain objects in the world, so give it a chance to do its magic, but kill it and retry if really nothing is happening on screen ;) .

It also seems like the 32-bit Windows build doesn't work properly (at least when I tried it just now, 10/07/19, the Nonogram solver hides after a few inputs and then never shows again!!!) Please try to either to play the game directly from source or, if possible, use the 64-bit Windows build, which doesn't suffer from the problem. Thanks.

About

A puzzle / exploration game that heavily relies on procedural generation.

I wasn't too excited about the theme Tower at first and when searching the web, I stumbled on the "Devils Tower" in Wyoming, USA, which looked like a shape I could more or less generate and thus decided to build a game that takes place around the Devils Tower.

Most of the time, I spent writing various parts of procedural generators as a basis to generate geometry, place objects, etc. Also a notable amount of time I invested in things I wasn't even sure whether they would come in handy later on...

As a challenge I wrote a veeery basic collision system more or less from the ground up. I obviously didn't want to implement linear algebra ops from scratch, when I have libraries that do that faster than I could ever optimize a piece of code... I did implement a quadtree just because I wanted to at the beginning, which in the end proved very helpful together with the collision system.

This was a blast and I'm looking forward to playing all the games in this contest :)

Here's a video of me playing my game in the almost final version you can get here: Playthrough

Build / InstallInstructions
Thanks to rdb I now have a Windows 32/64-bit builds alongside the source, though getting this to run should be easy enough for anyone familiar with pip and the appropriate tool-chains and header-files/libraries to build Python extensions for your OS (No build tools necessary for 64-bit windows, since there are binary wheels available).

This game requires Python 3.6+

To get the appropriate build-tools on Ubuntu, this command does the trick:
sudo apt-get install build-essential python3-dev

My recommendation is to either clone from github or download the zip file and then simply run
pip install -r requirements.txt
(preferably in a virtualenv, imho... if you're unfamiliar with virtual environments and python, this could help fill that hole you didn't know was there before...)

Running the Game

python3 run_game.py / python3 run_game.py

Game Instructions

General
You can move around with whatever keys are mapped to the location, where the WASD keys are located on a US English Keyboard layout. I purposely did not add a bunch of text in the game, because I want the player to explore the world and find out what the goal is on their own. Since my character has a tendency to dive below the terrain, you can move the camera with the mouse movement as to at least see what's above ground...

Nonogram (also called Picross or Griddlers)
One form of puzzles you find around the world are Nonograms, that are a form of logic puzzle that describes an image by a series of numbers. To the left and right of every block, there needs to be at least one empty cell. If to the left of a row or above a column you find "3 2 1", you know, that in that row/column there are 3 connected blocks, one with three, the second with two and the last with just one cell connected, all while between every block remains at least one inactive cells before the beginning and after the end of the block. If its still unclear to you how to solve a Nonogram first read the Wikipedia page about it, linked above or search the web for a more thourough explanation.

When you find one of the puzzles and solved it (or if you want to get back to it at a later time), you can just move away and move around normally. The first time you encounter a Nonogram, a screenshot from the article about it on Wikipedia is shown. To close this screenshot, simply press one of these keys/buttons: (space, enter, right or middle mouse-button).
You don't have to solve a Nonogram completely, the game saves the grid after the last manipulation and you can always come back to solve it later.

Debug switch I left in the game: You can switch to wireframe view with F1 inside the game at any time.

Have fun!!

Credits
  •  Using Nonogram for puzzles was the idea of my good friend Evelyne
  •  SFX and the song playing in the background are from my neighbor/friend Joel
  •  The Panda3D community for helping me figure out  technical problems

Special Thanks to

  • Kathy for keeping my back free during this jam week so I could focus 100% on creating this
  • Evelyne to help brainstorm ideas and help me keep my motivation when I got frustrated
  • My neighbor joel, both for the music and the regular requests to come outside to let our dogs play in the garden -> the only fresh air I got in 7 days :P
  • rdb for motivating me to take part in this competition in the first place

Videos and Screenshots

Playthrough Video on Youtube

Nonogram Solver

Mysterious obelisk inside a stone circle...

External links
GitHub Repository
itch.io Page

github.com/tcdude/pyweek28

Awards


The August Dvorak award for recognition of non-QWERTY keyboard layouts
Presented by rdb

incredible truly astounding so beautiful...
Presented by speedlimit35

Squeaky Bump award for invisible walls
Presented by tundish

Give this entry an award

Scores

Ratings (show detail)

Overall: 3.7
Fun: 3
Production: 4.3
Innovation: 3.8

9% respondents marked the game as not working.
Respondents: 10

Files

File Size Uploader Date
Devils_Tower-0.1_win32.zipfinal
Windows 32-bit build
67.0 MB tizilogic 2019/09/29 22:33
Devils_Tower-0.1_win_amd64.zipfinal
Windows build
73.5 MB tizilogic 2019/09/29 20:39
Devils_Tower.zipfinal
Final Submission w. bugfixes for windows
38.8 MB tizilogic 2019/09/29 15:21
Screenshot_from_2019-09-27_04-55-41.png
nonogram solver
358.8 KB tizilogic 2019/09/28 22:53
Screenshot_from_2019-09-29_00-25-32.png
final stretch
470.1 KB tizilogic 2019/09/28 22:26

Diary Entries

The second half of PyWeek

At the 4th day, I started to feel the pressure of actually delivering a playable game, rather than just some interactive, generated world. I didn't find the time to write diary entries during those last days, but I accomplished and got a playable game out of it.

In the end I managed to write a rudimentary collision system from scratch, together with a quadtree implementation, also from scratch. I'm proud of what I accomplished to build in just one week. A generator for the 3D world, two types of puzzle (Nonogram and entering the correct symbol code), a collision system and all mashed together into something game-like.

Right now, I'm still trying to get a Windows standalone executable to work. If this isn't happening, I'm not too worried though, since I suspect that all participants of this contest are capable to create a throwaway virtualenv and run:

pip install -r requirements.txt
python run_game.py

inside it.  DISCLAIMER: I only tried this on Ubuntu 19.04 and Windows 10 x64 and the game launches for me on both. Not sure what mileage you get out of your preferred OS though...

Add a comment

Day 3: it's starting to come together...

3 days (and some) in and I got a controllable character with a simple terrain and one type of tree...

this is what it looks like right now:
a small screencap of the progress



Add a comment

Boiler plate and such

I find joy in trying to create generators that in turn generate worlds to explore and build games inside. One of the major obstacles at the beginning of a jam is to write all the boiler plate code for such a generator. Mostly it's just a repetition of something I already wrote several times over and even though I've gotten a lot faster at writing those basics, I still fall into the usual bug traps during development. There's always several things I mess up and then spend hours on end debugging...

During this first day I managed to generate parametric spheres and cones:
yay... shapes...

Tomorrow I'll probably extend the shape generator, adding cuboid, maybe torus and/or ellipsoid shapes into the mix. To then move on to use that generator to build more complex stuff...

For now I'm toast.

Add a comment