Projects‎ > ‎

Yoshi's Coin World

The second part of the Tom and Matt Make Games For University Trilogy.

Technical Details

OpenGL and SDL
No (due to the mesh code)


This was one of the three games I was required to co-create with Matt as part of my final year of University, the other two being "Awesome Capture the Flag" and "Puzzle Wizard". This project was started sometime around November 2008 and handed in around 1st April 2009.

Unlike the Awesome Capture the Flag project, the specification for this game was rather vague. The only real requirement was that the game should be 3D, with no restrictions as to what genre it should be or which APIs should be used to implement it. While this seemed to be a great opportunity at first, we found that the lack of restrictions left us with no particular direction at the start of the project. As a result, things started to get bit silly.

Our brainstorming session consisted of paper, pencils, an internet connection and lots of cups of tea. We started off by thinking about what we knew we could do with what we already knew. Since I had previously written code to load a variety of mesh formats, including Quake MDL, MD2 and MD3 in addition to standard formats such as OBJ, 3DS and STL, we decided to use this as our starting point. The next step was to search the various Quake mod sites for meshes that could be useful.

We found an MD3 mesh for James of Team Rocket. Our initial idea, therefore, was that you'd play as him. However, Quake III Arena generally splits characters into multiple MD3 files (for legs, body and head), which would have made things rather more complicated in terms of engine coding when compared to the one-thing-has-one-mesh-file approach that I had originally intended. As a result, we decided that the best aspect of James was his head, and kept that.

We then discovered various other models, including a rocket launcher and an MD2 model of Yoshi. The Yoshi model was fully animated, including idle, running, jumping, pain and dying animations and, since it was an MD2, it was all contained in a single file. We were already playing with the idea of making a Mario64-like game, and this model was perfect.

Whilst I was searching the internet for media files we could use, Matt was scribbling possible game designs on a piece of paper, modifying his picture whenever we found a new model we liked. The end result was Yoshi holding a rocket launcher, with various floating platforms leading the way to an exit pipe and floating James heads that he could collect. Matt decided that it was important to label this image, and scrawled "Yoshi's Cack World" across the top of the page.

While we eventually decided that the James heads and rocket launcher were a bit too ridiculous, we for some reason agreed that the name was perfectly sensible. It wasn't until we came to hand in progress reports for an early version of the game that we realised that the University might find the name objectionable and thus swiftly altered it to "Yoshi's Coin World" instead, since that fitted in with the YCW initials scattered all over the project files.

The map format was fairly simple - the world consisted of AABB regions, each rendered as cuboids with different textures on each face. These "World Blocks" could be either static or dynamic, with dynamic world blocks functioning as both moving platforms and Thwomps. Maps would also contain invisible Warps (which would teleport the player to another map when they collided with them) and various "actors" such as goombas, stars and coins.

Since I was working on the game engine, Matt focussed on creating a level editor. Deciding that creating a fully-fledged level editor was too much effort, he instead created some simple conversion programs that allowed him to transform WorldCraft maps into our custom level format. This saved a lot of time and allowed him to get started on the levels much earlier than he would otherwise have done.

Searching the internet, I found that someone had already made a goomba mesh that we could use in the game. The only problems were that it was static, high-poly and lacking a texture. After installing Blender and converting it to another format, I loaded the mesh up in MilkShape3D to simplify, skin and animate it. The end result looked similar to the original model, but had feet that waggled up and down as it moved.

Aside from the goombas and the Thwomps (which didn't actually work because the "crush" logic was missing), the only other enemy in the game was the Shambler from Quake. Shamblers were supposed to be a placeholder until we could replace them with something more fitting, but by the time the deadline had arrived, they were still there, with the same AI as the goombas. What made this really strange was that they could be jumped on an squashed like the goombas could...

When the deadline arrived, the game was mostly functional, although it still lacked a few important features:
  • The player couldn't be crushed by Thwomps.
  • The third-person camera could go through walls, obscuring the player's view.
  • The real-time stencilled shadows either did or didn't work depending on your operating system and graphics card.

I should probably write something about how Matt implemented much better AI than I did, just days before the deadline.

Where can I download it?

Due to the game containing music, sound effects and characters from the Mario series, we're unlikely to ever put it up for download. Nintendo would probably take a very dim view of us pretending to be them.

NOTE: I won't be uploading Puzzle Wizard here since Matt was responsible for around 90% of the work on that project (all I did was play-test it and design some levels). Perhaps he might decide to put it up for download if he ever updates his website...
SelectionFile type iconFile nameDescriptionSizeRevisionTimeUser