Buckle in for another Learner Success Story! Today we are following up with educational game developer Ryan Miniger, who we interviewed five years ago, to find out about his newest and latest projects.
Thanks for joining us again, Ryan! To start things off light, what have you been doing since we last spoke programming-wise (almost 5 years ago)?
First, I’d like to thank you for the follow-up interview! After finishing the large financial game nearly 5 years ago, I tried to stay active with what I learned in the game development course. I started programming some of the game ideas I had while learning Phaser and was able to complete a small tapping game called swimmerDUDE where you tap the screen to swim faster than your opponents.
I also had an idea for a match 3 game and a virtual pet underwater aquarium. I had purchased some underwater game assets and used Phaser to animate several of the characters, but there was no interactivity and I wasn’t sure of the rules, so I never got much beyond that particular game until recently.
Unfortunately, my programming took a back seat for a number of years as work projects kept me from diving back in. A couple of years ago, I did manage to create a Pinball Random web app with Phaser to randomly choose from a list of pinball machines, so my friends and I could randomly choose a game to play in my basement!
We understand that you’ve both stopped and revisited an old game project called Orbuzzle. Can you tell us a bit about the game and its development process over these years?
In 2016, I had created some design mockups for a match 3 game called Orbuzzle, using orb characters I created in 3D long ago (2005). I’ve used the characters for past animation projects and thought they would be perfect for use in a match 3 game with a space theme. After following the match 3 course, I was able to have a basic match 3 game working, but I wanted to add additional features such as bonus scores for creating chains and even showing a hint after so much time had passed.
After much trial and error, I was able to finally get the hint and bonus scores working and essentially had an endless level 1. I had some ideas for a ruleset, but I could not settle on how the game should proceed. It was at that time in 2017 that the game was put on hold. I’ve been wanting to get back into game dev this whole time and these unfinished projects kept gnawing at me. I had a small surgery at the beginning of November and I found myself with lots of time while recovering and decided this would be the perfect time to revisit the games.
I dove into the code and was very rusty! I decided I would start watching the game development course again to grasp the basics again. It didn’t take long and I was back to editing the Orbuzzle game code. I had sketched out some ideas for a level up screen and a more structured rule set as a race against time to get x amount of matches per level. After a couple of long days, I had the level screen working with a short 3D animation rendered to a sprite sheet that played during the level up screen. There are 8 different orb characters, so I ended up creating this animation for each of the characters so the level up screen changes. In the process of upgrading the game, I was able to optimize some of the older code and make some cool changes to the game in the process.
I now have 22 levels created and I can’t get past level 18! I decided to make the game rather challenging over time. The grid size starts small and grows with each level as well as more pieces being added. The fun starts at level 12 when the color is removed from the pieces and it is much more difficult to make matches. Then to make it even tougher, level 20 has the pieces scaling up and down. After a few matches, the scaling is offset and makes for an interesting experience. Level 22 takes it a step further and rotates the pieces as well as scaling them!
I plan to add a few more levels and tweak the code a bit further, but this was a great way to get myself back into game development!
Let’s also talk about your latest project Tropical LIFE! What can you tell us about the game and how it came about?
Tropical LIFE was my idea for an underwater virtual pet game where you earn shell points over time and can spend them in the fish shop to add fish and items to the aquarium. When I left off, I had several characters animated and it was fun to watch, but there was no interactivity. I decided I would dive back in and finish animating the rest of the characters and add them to the intro scene.
I had already created a mockup of the fish shop several years ago, so I got to work making the fish shop work. This presented a real challenge for me because the shop had to be smart and check if there were enough shell points to make a purchase and since shell points are given over time, the shop had to update when enough shell points were earned for a particular item. I finally got that working only to discover that hiding the shop wasn’t enough to prevent it from being clicked when viewing other pages. So, that led to some creative programming and destroying and recreating groups, but it works! Once I had the shop working and items could be purchased in the tank, some friends suggested an interesting game mechanic – keeping the tank clean!
That led to further challenges of how to best create such a thing, but I was able to implement a tank health value that gets subtracted over time, and as tank health decreases, I tween the opacity of the dirty water. Trash items appear on the sea bed and the user has to clean the tank by touching the trash items to receive bonus shell points and restore tank health. If the tank health reaches zero, all purchased fish disappear and you have to buy them again.
At this point, the game is working, but I am still having friends play it to see how it can be improved. I may speed up how often trash appears, etc., but I’m very happy to have taken the game from something fun to look at to a fully functional game that works!
What animation or programming challenge you had to overcome while developing Tropical LIFE was particularly memorable?
I would say one of the memorable challenges for me was the tank health. Setting up the visuals and animating the values was easy enough, but the challenge came when I did not want the tank health value to drop below zero or go above 100. As you click on trash, it adds tank health, so I ended up having to use some IF statements in the method that tweens the value and make sure it never exceeds 100 or drops below zero.
Then I had to overcome the fact that as tank health was dropping, even though the onscreen value was zero, the internal counter was negative, so clicking on the trash to add health points did not start at zero! So, with more clever IF statements, I was able to get the value to increment from zero. Maybe for experienced programmers, these types of things are easy to overcome, but it was a great challenge for me to overcome. It was extremely satisfying to finally get it working!
We are happy that our courses helped you start this amazing game development journey! How have the courses at Zenva influenced these projects?
I had no idea how much I would enjoy using Phaser for my game projects. If it were not for the Zenva game development course, I would not have been able to learn Phaser so quickly and bring even simple ideas to life. There is so much power under the hood and the course explains everything you need to know to get started making games. What I like most about the course is that it gives you enough information to make a basic game, but challenges you to implement the next feature set or expand on the rules to your liking. I also like that I can go back and watch the videos over and over to reinforce concepts that are difficult to understand or to relearn something I had forgotten.
You’ve mentioned you have a few ideas for other projects. What do the next few years have in store for you, Ryan?
I think the next few years will keep me busy making all of these games I have on my list! Since I was able to finish up Tropical LIFE, I decided I would try combining Tropical LIFE and Orbuzzle and create a Tropical Match game where you match fish instead of orbs and can unlock fish or items at the end of the level to populate the aquarium that can be seen during gameplay. I’m still working out the rules, but I have already implemented the game assets and have a playable level 1!
In addition, I want to try my hands at a few action games like a space shooter and an ‘Orb Wars’ game using the orb theme in either a side-scroller action game or a top-down Spy Hunter-type game. As another challenge to myself, I want to revamp an old Apple 2 title called Super Bunny, kind of like a horizontal Frogger, but once you eat the carrot on the opposite side of the screen, you can destroy the bad guys on the platforms. I think this is a perfect game for Phaser!
I also have some educational game ideas for kids, but there are only so many hours in the day!
Time is about up, so one last question. What is the biggest lesson you have learned over these last five years that may help future students?
Never stop learning and never give up! Over the last few weeks of diving back into game development, I can say that whenever I get stuck on a logic problem, I take a break and do something else. And most of the time as I’m thinking about what I’m trying to do, I get an ‘aha!’ moment that gets me jumping back to the code and trying out my idea. So far, this has helped me overcome several hurdles in my games. Even talking aloud to yourself and explaining what isn’t working and what should be happening has actually helped me overcome some problems as well.
We hope you’ve enjoyed our latest interview with Ryan, who we can’t thank enough for sharing his continued game development journey with everyone.
If you’re ready to take the dive, then check out Ryan’s latest project SwimmerDude.
Maybe an island getaway is more your style – TropicalLIFE might be what you’re looking for.
Not a fan of the ocean? We suggest having a look at Orbuzzle!