Sunday, December 20, 2020

Hollow Knight Softie

 

My son and I have been playing a lot of Hollow Knight on Switch lately (eagerly waiting for any more news on the release for Silksong!). In fact I played the game when it first came out almost (more than?) two years ago, and I remember I got about halfway through and then things just got a bit too hard :) and I moved on to other games. Recently my son picked up the game (with relatively little platformer experience) but already he is well past where I got up to (young minds learn new skills so fast), so I decided to start a new game again and I've been loving it.

Anyway, I decided it was time to get the old needle and thread out again and do another softie, this time making a little Knight. He will be a Christmas present for my son (who otherwise said he wants Silksong for Christmas, but we will have to wait for that one :)). I might end up making a few additional accessories and maybe even a Hornet doll to go with him if I'm feeling bored over the holidays!

Merry Christmas for 2020!




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.




Saturday, November 28, 2020

LowRezJam 2020: "Blur"

"Blur" was my solo entry to the LowRezJam 2020, a game jam where you have to make a game with a maximum resolution of 64x64 pixels. I decided to make a sound-driven story game where you play an astronaut trying to safety navigate their spacecraft back to Earth after an explosion on the spacecraft. The general idea of the game is that you regain consciousness after the accident and are experiencing temporary loss of vision: the game begins with a resolution of 1x1 pixel. As you start to regain your sense and get you spacecraft back in order, your vision slowly starts to return as the game progresses from 2x2 pixels to 4x4 pixels to 8x8 pixels and eventually 64x64 pixels by the end of the game. With the help of ground control over the radio you need to problem solve your way through malfunctioning subsystems, power restarts, communication failures, fire in the cabin and eventually safely re-enter your spacecraft back down to the ground.



I had a lot of fun making this game: because it was so dependant on sound, it relied pretty heavily on some voice acting, a script and various sound effects, so it was a good learning experience trying to do a lot of this stuff for the first time in a game. It made me realise too that making sound-driven games is really hard to get right and find good puzzles and mechanics.




The game was programmed in Python/Pygame and there are both Windows and Mac OSX builds of the game (made via PyInstaller) that are available, as well as the game source code, here:

"Blur" by mit-mit on itch.io (https://mit-mit-mit-mit.itch.io/blur)


Saturday, June 27, 2020

Game Music

As much as I enjoy working on code and game design for game jams, recently I've been having a lot of fun working on audio and music: I think game music is really cool to work on, because like with film, the music has to support the themes, atmosphere, pacing and story that's going on in the game. I think game music is fun too, because it's easy to draw from lots of different genres and styles of music, and people accept that game music can sound a bit quirky.

I've worked on music for a couple of recent jams:


https://soundcloud.com/user-349094787/improbable-mission-force-medley
"Improbable Mission Force" (https://pyweek.org/e/pw---__/) was a PyWeek 28 Entry for the theme "Tower" that I worked on with some PyWeek veterans: I did the music/audio and a bunch of 2D artwork, plus some script and voice-acting: was super fun. Game started off in a sort of Die Hard-like 2D shooter, but then halfway through the jam our graphics-guy showed us the player character art, which was a bit more like xXx so the music made a bit of a turn from action-orchestra to punk and guitars, and some how synths got in there and it was lots of fun.


https://soundcloud.com/user-349094787/bunker-builder
"Bunker Builder" (https://alakajam.com/8th-alakajam/874/bunker-builder/) was an Alakajam #8 entry I worked on the audio for: I took a lot of inspiration from the the soundtrack to WarGames.




https://soundcloud.com/user-349094787/el-ratto
"El Ratto" (https://karhal.itch.io/el-ratto) was an entry to the Historically Accurate Game Jam #2, in April 2020 for the theme "Black Death": this one was fun because I got to do a bit a research on medieval music, and had a go at playing with traditional instruments.

https://soundcloud.com/user-349094787/hackr0ute
"Hack::R0ute" (https://alakajam.com/scorespace-alakajam/961/hackr0ute/) was an entry to the ScoreSpace x Alakajam Game Jam in June 2020 for the theme "Connections". I worked on audio/music for the game.

I'll keep posting new music I do for jams and other games to my Soundcloud page here:

https://soundcloud.com/user-349094787

Monday, June 8, 2020

French Knitting

So with the world falling apart around us with coronavirus, we are all stuck at home and getting pretty bored. My older son built a french-knitter out of a toilet roll and some paddle pop sticks (just like I remember doing as a kid also) and started making endless lengths of woollen cord. It looked like fun, and I wanted to join in: but I didn't really want to make cord: I thought it would be cool to make something that would be more useful, and I was interested to understand how the principle of simple french knitting extended to larger spools. So, we went ahead and built this one:

It's about 20 cm in diameter and is made up of 22 pegs and knits a tube about 10cm in diameter. My son quickly took it over and started creating tubes that you tie off at one end so they are kind of like a baby's beanie. It was pretty cool: he ended up making sleeping bags for toys and giving some away to the neighbours and other people we know.

I don't think I was quite satisfied yet, so as a next logical progression, we built this one:

This weighed in at a slightly more impressive 40 cm and 51 pegs: put together with some old Ikea cardboard packaging. This was a bit more useful for me as it knitted a tube approximately 20 cm in diameter which makes a good sized winter scarf. Only problem is it does take along time to knit: I guess I'm not a seasoned knitter, so it seemed like a long time to me: at fifty-ish pegs per round and an approximately 2 meter scarf needing 210 rounds across 7 colours, there were about 10,500 stitches involved, which took me about 3 weeks of work, working about 45-60 minutes a night ... it's the sort of thing I'd probably do once just to satisfy my curiosity, but probably won't try again :). I got about half way through my second colour (orange as pictured above) before my fingers started to blister and I couldn't go on :) ... I ended up breaking a kebab stick in half and using it as a make-shift knitting needle, which worked a treat: craft for me is strictly using hackish, inappropriate tools to get the job done :).



Actually, working on this project has re-affirmed for me how much I don't really like repetitive manual work, even if knitting is sort of relaxing, I guess. I'm pretty chuffed with my cool scarf, though. I'm thinking about putting a bit of research into building my own automatic tube-knitting machine, so I guess there might be a part two to this post if I end up building something.

Tuesday, December 24, 2019

Arduino-powered Gingerbread House

This year for Christmas, my wife made each of us in our family a gingerbread house to decorate during the holidays: a great activity to do together and break up the otherwise endless cycle of eating and video games :). We decided to make a theme that we would all decorate to: "bright and colourful", fairly straight forward. I couldn't help myself and so I wanted to integrate in some electronics and colourful lights to really add to the brightness factor!

I put a spare Circuit Playground I had sitting around to good use, by programming a little rainbow light show to go with my house: the light show is activated by a digital microphone on the board by blowing gently into the window of the house. I would have had a Christmas tune playing on the board too, but unfortunately the speaker on my Circuit Playground isn't working.

The Arduino sketch can be found here:

https://github.com/mit-mit-randomprojectlab/gingerbreadhouse_lights

Merry Christmas!

Sunday, December 15, 2019

Arduino Power Moon


It's that time of year again so time for a Christmassy sort of project to round out the year. In the past I've 3D printed lots of Christmas decorations, so I thought it was time to make a nice Christmas tree topper. Normally this would be a star, but my son has been playing lots of Super Mario Odyssey lately, and I wanted to make something he would think was cool, so I went with a Mario-style Power Moon from the game.


I wanted to add a bit of light and sound, so I started digging through spare Arduino boards to see what I could make work with battery power in a minimal footprint. I ended up using a Adafruit Gemma m0, as it's small, has a battery JST input, on/off switch and a single Dotstar three-colour LED mounted on the board already. All I needed to fit in with it was a small lipo battery and 8ohm speaker for sound and it was good to go.


I wanted the power moon to be able to change colours (as they appear in various colours in the game, depending on which kingdom you are in), so I 3D printed the moon using transparent filament and designed a little cavity inside the moon to house the electronics and light. The resulting effect with the LED on is that the filament catches the light and creates a nice glowing effect.

For music, I wanted to go just a little step beyond a series of single tone beeps, so I did a little research on how to get timer counters and interrupts going on the Gemma m0 (and other SAMD boards), mainly by studying the existing Arduino "tone" implementation for this chip. I ended up creating a modified set of tone functions that use both timer 4 and 5 to generate two pulse wave voices so I could play some very basic polyphonic music. There are three I/O pins on the Gemma and I wanted to keep one free as a switch to control the activation of lights and sound, hence just two sound channels.

For the electronics, I soldered the Gemma pins directly to each end of the speaker (via a pair of resistors) and wired up a vibration-activated switch between one of the digital inputs and ground, so that I could trigger light/sounds shows without having to put in a button, or open up the case. I fit a small lipo battery in between the Gemma and the speaker, so everything is together in a small disc-shaped package.

For music, I composed some two part tunes using Musescore and wrote a little python script to convert Musescore mscx files (XML formatted files that contain the music data in terms of the note pitches, timing and durations) into data embedded into a header file I could compile straight into the Arduino code. I then wrote a system in for pulling out the appropriate note data at the appropriate time to pass on to the modified tone code.


The moon is made up of two halves that need to be able to come apart (in order to switch it on/off and take the battery out for re-charging), so in order to have something that can open and close easy, I glued some small magnets to the inside of each side of the case that hold the moon together. Seems to work pretty well!

Here's a video of the moon in action: Merry Christmas!




Design Files:

3D Printed Case STL files:
https://www.thingiverse.com/thing:4047914

Code for running the power moon:
https://github.com/mit-mit-randomprojectlab/power_moon