Wednesday, December 1, 2021

Four Boys and National Game Design Month

Maybe you've had a chance to read the epic post about my experience with National Game Design Month 2021 and the making of Blobbo Globbo. Regardless, at the same time that I was building my November project, I was also encouraging and mentoring my boys in their own NaGaDeMon projects. The older three had participated last year, and this was the first that all four undertook their own projects. 

The motto of national Game Design Month is "Make-Play-Talk," and so to satifsy that last piece, I have encouraged the boys to write reflections about their experience. For the younger boys, I gave some prompts that I use with my college students: What went well? What did you learn? What would you like to do next time? Below, you'll find links to their projects and copies of their reflections. Enjoy!

#1 Son (14): Goblin Dungeon

Repository: https://github.com/the-alex-g/NaGaDeMon2021-2

The Linux build can be found in the release.

Reflection:

For NaGaDeMon 2021, I made a Minesweeper-like game in C++ to help me learn the language. Titled “Goblin Mining”, the game is played by moving around a ten by ten board with wasd. Goblins and ogres are randomly distributed around the playing field. The game is won when all the goblins are revealed — and lost when the player enters a space with an ogre.

My original idea was to make a 3d roguelike in Godot. I started that project, but was rather unmotivated and felt like I had no time to work on it. I had recently joined the local FIRST robotics team, Phyxtgears, and I was interested in joining the programming team. The robot programs are written in C++, and I knew none of that language. The other team members taught me some of the essentials, and C++ was similar enough to other languages I had used that I was able to understand what they taught me pretty quickly. Over Thanksgiving week, I started work on Goblin Mining. Since life had slowed down for the holiday, I had plenty of time to work on it and was able to get it finished before the end of the month.

My favorite part of the project was figuring out how to modify the text that was being printed in the console. It is done by inserting strings of the form “\033[Xm” into the text, where X is a number between 0 and 107. For example, 31 makes the text red, and zero resets the text to default. Here is a link to the website where I found this information. I made a header file with all of these modification strings in it, then learned how to include it in my main project.

There were only a few problems I encountered making this game. One issue was that sometimes the entire board has been revealed and the game does not end. Another was that I could not find a way to enlarge text being printed in the console. A third complication arose when Dad and I tried to use Emscripten to publish my game on the internet.

After giving up on using Emscripten, Dad helped me to make and release a Linux executable for my game. I learned about read, write, and execute permissions in the process. However, making an executable for Windows was not feasible.

The entire game is played in the console, and when the player wants to move they must type w, a, s, or d and then press return. Sometime, I want to try and figure out a different method of taking input so the player does not have to hit “enter” every time.

I enjoyed making Goblin Mining, and I think it is actually rather fun. Even with my limited knowledge of C++, I was able to create the game without too much trouble. Then, on November 30th, the last day of NaGaDeMon, I learned about classes and inheritance. If I had had the time, I would have rebuilt my game to include these concepts. As it is, I have an idea for another, similar game I could make with my newfound knowledge.

Dad's note: I am proud of my son for exploring C++. He looked up and used some interesting features to get this game working. Unfortunately, some of these are POSIX-specific features, which complicated trying to make a Windows build. We tried emscripten for putting the game on the web, but getting his input scheme working would have required a lot of rewriting. He was able to figure out how to make Linux builds himself, and I helped him look into trying to build it for Windows; first, we worked on this together, and then I spent even more time trying to sort out all the issues myself. After a surprising amount of effort, I was able to get mingw to compile his program and then to run it on wine. Unfortunately, I hadn't seen that in the code, he also calls Unix shell commands like clear, which simply don't port to a Windows environment. There wasn't any way to get this working without a rewrite that would have taken him past the end of November. I learned a few new things working with him on this process though, and he's learned a bit more about platform issues.

#2 Son (11): Infinity Dungeons

Web build: https://the-g-force.github.io/NaGaDeMon-2021-L/

Reflection:

This year for Nagademon I made a platformer in Godot. I have never made a game in Godot before, so it was all very different from anything I had ever done before.

In the game you are a guy with a sword running through randomly selected levels using the arrow keys to move and jump. In the levels there are three kinds of enemies. All of the enemies are slimes that move across the floor. There are slow green slimes, medium-speed yellow slimes, and fast purple slimes, all of which can be killed by swinging your sword using the down arrow.

Being my first game in Godot, I think it went pretty well. I had to ask for help a lot but that was to be expected. I had fun making the art and animations, and I think that the end result was pretty good. Making the sound effects was fun. Given more time I would have added more animations, sound effects, enemy types, and levels.

Dad's Note: I am really proud of this guy for diving into Godot Engine. He has been building stuff in Construct and Kodu for years, but this was his first experience with text-based programming and a more robust engine. I gave him and his younger brother some tutorials early in the month to get them started. It was a bit too abstract for the younger brother, but #2 son really caught on. Fortunately, his older brother has done quite a bit of Godot Engine work, and so he stepped in to help answer questions.

#3 Son (9): Dungeon Runner

Reflection:

I didn’t get to do all the things I wanted to do because I kept on forgetting to work on my game. But the scope may have been too big in the first place. One of the main things I wanted to do was to add enemies. One of the neat things I learned to do was to make you “climb” ladders by double jump when you overlapped them.

I am happy with the art I made, and all the coding that went into the game.

Enjoy!

Dad's note: He didn't get the game fully working, and we talked a bit about how and why that happened. His first pass at a reflection glossed over this, but I encouraged him to really think about it. His final reflection is a great improvement and more honest.

#4 Son (6): Dragon Game

Reflection:

The dragon's flying animation went well. I learned how to draw dragons. I usually draw other animals. In my next game, I would like to make a castle background.

Dad's Note: This is this guy's first year participating in the event, and he also built his game using Construct 2. When he first demonstrated his game to me, I was blown away. He was so pleased with every aspect, and almost none of it made any sense to me. Seriously, you have to check it out. This is the same kid who designed our family classic, Joe Johnson Gets Captured. He has a unique sense of design. 

I asked him if there was anything else he wanted to share, and he remembered that, when I played the game, I recommended documenting some instructions on how to play. Here they are:

Down arrow to shoot. Up arrow jump. Right and left arrow move. Shoot ghost to kill it. Click red ball to start lightning animation.

No comments:

Post a Comment