Showing posts with label PyWeek. Show all posts
Showing posts with label PyWeek. Show all posts

Sunday, June 5, 2022

PyWeek33: Quantum Entanglement

"Quantum Entanglement" was a team entry by Team MYCTL (for which I was part of) for PyWeek 33, (March 2022), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "My Evil Twin", and we made a 2D puzzle game where you control two scientists (one good and one evil) walking around within their respective labs, but where the controls for each character are linked to the same keyboard presses. The aim of the game is to direct the "good" scientist to a goal "green crystal" while ensuring that the evil scientist does not touch any of the "evil" items he has lying around in his lab space.

This was my first go at trying to "coordinate" a team entry (bigger than two members) and it was super enjoyable and a great learning experience: we had a good mix of different skills in the team and experience levels ranging from early programming experience to professional software devs, and from no game jam experience to very experienced game jam competitors. I learnt a good amount about managing a git repo with slightly larger teams (something I can say I'm probably not very good at!) and had a lot of fun working with others in different creative capacities: we even managed to get a game story going with a script and voice acting which was super cool :).

There were a lot of really cool puzzle concepts amongst the other entries for this year's jam: I think it was something to do with the theme that made for a lot of cool ideas, and lots around trying to control two characters (twins) simultaneously. I liked our concept, and would have liked to be able to spend more time trying to think through all the emergent mechanics that come out of the rule sets we came up with (but 7 days goes so quickly!).

The general premise of the mechanics was that each character is controlled by the same common set of ASDW direction commands: each character's environment is different however, so depending on how their character interacts with their map (i.e. one character runs up against a wall while the other continues to travel in free space) the "state" of each player (i.e. position in world) can be different. The general aim of the game is to guide the "good" character to a goal location (green crystal) while making sure the "evil" character does not touch any of the "evil" objects/squares in their map:

Using this mechanic, we developed a few different types of levels:

  • Early levels just presented each world with enough clutter to make the player concentrate on both worlds at once, but you could win by just guiding each player along the same overall path
  • Later levels would start to require that the player changes the relative offset between characters by pushing one up against a wall that the other did not have in their map: this would often be required to traverse a path that was offset from one world to the next.
  • Final levels would start to build on this complexity by requiring some combination of these effects.
Overall the jam was a lot of fun, and we ended up coming second in the teams division with an overall score of 4.04/5.0 which I think we were all happy with.

Game Playthough:


Extensions on game puzzle mechanic: I think the general idea for the mechanic we had here was pretty solid and I've been wanting to explore this idea in a bit more detail: I generally don't think making puzzle games is my strength, so I'm keen to explore this a bit further, and I'll be looking into this in a future post.

Sunday, October 24, 2021

PyWeek32: Temporal Anomaly

"Temporal Anomaly" was my solo entry for PyWeek 32 (September 2021), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "Neverending", and I made a sci-fi story-driven 2D action game in which the main character is stuck in a never-ending time loop. The game requires you to guide your character around the inside of a derelict science vessel in deep space, using your laser gun recoil in the zero-G environment. As you experience and re-experience the same events through several iterations of the time loop, you pick-up clues that allow you to out-smart your arch-nemesis, the evil Dr. Ubel and save the day by avoiding a catastrophe that tears a hole in the fabric of space-time itself.

This was a really fun entry to make: I ended up using the python arcade library (instead of my usual pygame), which was quite nice and made a lot of things more convenient. I also made heavy use of PyMunk for 2D collision physics. Voice acting for the story was also a big feature for this one: I recruited me wife to play one of the roles and I did the other two: it was really fun, we had a full script and everything. 

  


I was super chuffed to win the solo division and overall winner with a score of 4.44/5.0, which makes it the highest overall rated game in PyWeek history! Super excited :) ... 

You can download the game in source version here (requires python, python arcade, pygame and pymunk).

Playthrough Video:

Tuesday, December 1, 2020

PyWeek 30: Marooned

"Marooned" was my solo entry for PyWeek 30 (September 2020), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "Castaway", and I made a 3D platforming game where you play as an astronaut that is stranded in an asteroid field after your spacecraft was forced to self-destruct. The game requires you to try and build items that will help you on your quest to repair and re-launch your escape pod by using the scraps and debris that you find around you. While on the asteroid field, you encounter hostile alien lifeforms that escaped from your ship, so the game has a mixture of platforming and 3D shooting as well. 





I had a lot of fun making this one, and was pretty happy that I managed to get most assets of the game up and running (code, art, modelling, music, sound) myself, without having to rely on many third-party ones (I had to use a few fonts and textures from external, free sources). The game ended up coming second in the solo division with a score of 3.96/5.0, so I was pretty happy with the result :).

Playthrough Video:

You can also download the game and play in from source (required Python, Pygame and PyOpenGL) here.




Friday, April 26, 2019

PyWeek 27: Breakout Blue


"Breakout Blue" was our (Team Chimera) team entry for PyWeek 27 (April 2019), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "six", and we made a game in which you control six inmates trying to work together to perform a prison escape.


I teamed up with Lucid Design Art, the other half of Team Chimera: it was our first collaboration in about two years, and it went well. I worked on game programming, music and sound, and Lucid worked on game design and artwork. The game involved a combination of puzzle elements and a little bit of stealth, and turned out well. We placed second in the team entries and tied for second overall with a score of 4.13/5.0 so we were pretty pleased with the result.


Playthrough Video:


You can download and play the game from source (requires python (2 or 3) and pygame installed).

Sunday, November 18, 2018

PyWeek 26: Storm Drain Odyssey


"Storm Drain Odyssey" was a team entry by Team Universe Factory (for which I was part of) for PyWeek 26 (October 2018), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This year's theme was "Flow" and we created a 3D dungeon exploration/puzzle game where you control a pet goldfish navigating your way out of a sewer labyrinth.



I'd been itching to be part of a team entry (I've done the last three comps solo), so I was stoked when I was able to join Universe Factory (definitely one of the most competitive teams in PyWeek, with several existing titles :) ) ... the team was very welcoming to new-comers. I focussed on graphics, 3D modelling and graphical programming (with a bit of sound-design) and it was a good experience working in a team but not leading or being responsible for major game mechanics: Cosmologicon, our team lead, ran a very tight ship and was very organised, so everyone seemed to be on the same page. I learnt a ton of practical experience in version control and managing working on software in a team (which I don't do much), so that was cool too. I also learnt how to use scripting with OpenSCAD to quickly turn around 3D environment models (which I documented in a game page blog here), a technique that I think I would definitely try to use again.



The game ended up coming second in the team division, which we were fairly happy with. There's a source and Windows standalone version that can be downloaded from the game page here:

"Storm Drain Odyssey" on PyWeek.org


Monday, May 7, 2018

PyWeek 25: The Desert and the Sea


"The Desert and the Sea" was my solo entry for PyWeek 25 (April 2018), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "Two Worlds" and I made a 3D exploration and adventure game set across two parallel worlds connected via a series of portals.

 

The game was inspired (sort of) by early 90s adventure games like Myst; there's a bit of exploration to do and some spatial puzzles built around teleportation and having to move between parallel worlds to by-pass obstacles that exist only in one world or the other. The game uses Pygame and PyOpenGL to produce it's first-person perspective graphics, and I was pretty happy with the final visuals and feel of the game. I spent a lot of time "world building" in this one, trying to use the visuals along with audio and music to create a nice atmosphere.

 

Although it wasn't my best entry in recent times, it still managed to narrowly win both the individual and overall winner for the comp with an overall score of 3.95/5.0, so I was pretty pleased :).

Playthrough Video:


You can currently download the game as either a source release (works with Windows/OSX/Linux, but requires additional installations) or as a standalone Windows application (I'm still in the process of getting the standalone OSX version working):

 

Windows (tested on Windows 7/10):
the_desert_and_the_sea_pyweek25_windows.zip (76.4Mb)

Mac OSX: stay tuned!

Source Distribution (compatible with Windows/Mac OSX/Linux, requires python 2.7, pygame, numpy and PyOpenGL, see installation notes in README):
the_desert_and_the_sea_pyweek25_source.zip (11.9Mb)

If you are having trouble getting the game to run, or have a bug/crash to report, please email: randomprojectlab@gmail.com

Monday, November 6, 2017

PyWeek 24: HackerBot


"HackerBot" was my solo entry for PyWeek 24 (October 2017), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "They're Behind Everything" and I made a 3D stealth game in which you control a little hacking robot trying to break into a space-based installation and steal data. You can "hack" into (and take control of) more powerful NPCs in order to help complete objectives (hence you're behind everything).

 


The game character is a little bot that can crawl around and jump from asteroid to asteroid. You need to avoid being detected by much more powerful "SentryBots" and turrets that essentially one-shot you. Your only "weapon" is your ability to "hack" into things when they get close enough: you can hack into shield generators to shut them down and access new areas, you can sneak behind guarding turrets and put them out of operation and you can even hack into passing SentryBots, take control, and wreak some havoc with their on-board weapons. The game features six levels and a giant boss battle to boot!

 


I was super excited to win both the individual entry and overall competition winner with a score of 4.29 out of 5.0. This score puts the game into the top ten PyWeek entries of all time (tied in at number 7, out of more than 1000 games over more than 10 years!) so I was pretty pleased with the result :).


Playthroughs:
Here you can find a full playthrough of the game, broken up into two parts:


You can currently download the game as either a source release (works with Windows/OSX/Linux, but requires additional installations) or as a standalone Windows application (I'm still in the process of getting the standalone OSX version working):

Windows (tested on Windows 7/10):
hackerbot_pyweek24_windows.zip (41Mb)

Mac OSX: stay tuned!

Source Distribution (compatible with Windows/Mac OSX/Linux, requires python 2.7, pygame, numpy and PyOpenGL, see installation notes in README):
hackerbot_pyweek24_source_v11.zip (8.3Mb)

If you are having trouble getting the game to run, or have a bug/crash to report, please email: randomprojectlab@gmail.com


Saturday, March 18, 2017

PyWeek 23: My Enemy's Enemy is my Friend


"My Enemy's Enemy is my Friend" was my solo entry for PyWeek 23 (February 2017), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "The Lesser of Two Evils" and I made a 3D tactical space shooter in which you work for an insurgency against an oppressive colonial government after your family is killed in a government attack; your character reflects on your retaliation against government civilians and is forced to question what action should be taken when faced with two evils. This comp I went solo for the first time since my first entry back in 2014 (my usual wingman for Team Chimera, Lucid, was taking a break).


The game was inspired by 1990's space shooters such as Colony Wars and X-Wing vs. Tie Fighter. Instead of using 3D hardware acceleration via graphics libraries such as opengl (or the pyopengl python bindings), I decided to experiment with the idea of doing 3D all on the CPU, in python. I was keen on this idea because installing 3D library dependancies in python can be a bit of a pain, with slightly unpredictable results ... also, I just got stuck on the idea early in the process, and I'm stubborn :). I managed to implement a basic engine for rendering 3D flat shaded graphics by performing camera projection and lighting calculations for triangular faced models using numpy and rendering faces using "pygame.draw.polygon". I added to this a basic horizon texture mapping (using numpy and "pygame.draw.surfarray" and rendering of circular particles using "pygame.draw.circle" and circle radius computed based on camera depth using numpy. The array of resulting 3D effects was pretty simple, but I think it worked pretty well: I had something that looked at about the same level (maybe a touch better?) as Starfox did on the SNES.


I ended up ranking second in the individual entries and third overall, a result I was very happy with. I received a fairly high "production" score (4.8 out of 5.0), so I was pretty miffed that players thought the graphics were decent enough.

Playthroughs:

Here you can find a full playthrough of the game, broken up into three parts (with a fourth showing an alternative ending to the game):

I'm currently working on getting a binary release/installer for OSX/Windows, but for now you can play them game by installing the source distribution (requires python, pygame and numpy) by downloading the game from the pyweek page: My Enemy's Enemy is my Friend.



Monday, September 26, 2016

PyWeek 22: Beneath the Ice


"Beneath the Ice" was our entry for PyWeek 22 (September 2016), a twice yearly video game development competition that gets competitors to build a complete game from scratch in seven days using the python programming language. This competition's theme was "You can't let him in here!" and we made a submarine exploration game and puzzle solving adventure, in which you must uncover the secrets of a mysterious pariah who doesn't want to be found, who can't let you in! The game was developed under the collaboration "Team Chimera" (myself and Lucid Design Art, who did all of the game's artwork). This is Team Chimera's third game in a PyWeek comp, after "The Wizard's Data" and "Adrift".

We were super excited to win both the Team Entry and overall winner with a score of 4.41 out of 5.0. Our score also makes "Beneath the Ice" the second highest ranking game in PyWeek history! (almost one thousand games over more than ten years!), so it suffices to say we were pretty pleased with the result :).



Here you can find the latest version of the game. We are currently in the process of cleaning the game up a bit (bug fixes, graphical updates and gameplay tweaks) and this page will be updated again over the next few weeks. The game is currently available for Mac OS 10.6+, Windows or as a source code distribution (multi-platform: windows/osx/linux) that requires the pre-installation of python and pygame (see instructions below):

Game Play Videos:


Downloads:

Mac OSX 10.6+: 
Beneath_the_Ice_pyweek22_osx_v100.zip

Windows:
Beneath_the_Ice_pyweek22_win32_v100.zip

Source code distribution (compatible with Windows/Mac OSX/Linux, requires python and pygame):
Beneath_the_Ice_pyweek22_source_v100.zip

Game can also be downloaded from the links on the PyWeek game page here.

Instructions for running the source distribution:

(1) Install python 2.7.11 (currently not working with python 3): go to https://www.python.org/downloads/ and download the installer for your platform.
(2) Install pygame: Once python is installed, pygame 1.9.1 can be installed using these instructions.
(3) Download the zip file above, unzip to a location of choice. Open a terminal (osx) or the command prompt (windows), change directory to the path of the game and type "python run_game.py".

If you are having trouble getting the game to run, or have a bug/crash to report, please email: randomprojectlab@gmail.com