Game & Mobile Dev

2023-03-31

Well, time has really flown by. I've been busy with school, now I'm also busy with work, but today I'm writing to talk about two classes that are a little outside of my regular interests: Game Development and Mobile Apps.

Game Development

I actually enjoyed this class a lot more than I expected. Of course, I enjoy playing games, but even though I feel like I have a lot of game ideas, I don't see myself getting into this as a career. It doesn't help that the game design industry is notoriously volatile. This course focused entirely on development with Unity. Having done a Tetris build last year, this made things a lot easier. Rather than spout on about the course in general, I'd like to highlight a few projects I made along the way.

Pong

The obvious place to start, Pong is a pretty simple affair of learning how to move objects in game based on player input, apply movement to non-controlled objects, and have objects interact with each other. Surprisingly, this is not a 2D version, but it does have that illusion. Only the 3D ball gives it away.

3D Platformer

Here I learned about character movement in a 3D space, including double-jumping, free camera movement, and coroutines. It was also a chance to experiment with different models using Unity's rigging and skinning system.

First-person Shooter

This one was worked on in little bits over the course of the semester. Aspects such as a messenger system, enemy controllers, raycasting, and particle effects were all included. I went for a dark and spooky feel for the textures and lighting.

2D Platformer

I really enjoy the aesthetic of this one. The pixel art brings me back to the games of my childhood, and it was really simple to place tiles to make a level. Too bad making that pixel art is the hard part.

EnemyAI

This one isn't just one lab, but I thought it was too interesting to leave out. Using the NavMesh and NavMesh Agent components, it's surprisingly easy to make pathfinding for your enemy characters. The second part to this was creating states for the enemy, so they would transition from idle, patrol, chase, and attack states each with their own animations.

Mobile Apps

Admittedly, I don't think I warmed up to this topic as much. The idea of mobile app development is fine, but I'm not a fan of Apple's practices in general, so the fact the class focused on iOS development was a bit of a drag. Even so, it had some good learning points.

I actually enjoyed Swift as a language. It takes a bit of time to get used to, but the nil operators and type specification are nice to have. Plus, XCode does a lot of error checking that makes dealing with problems a breeze. What I still haven't warmed up to is SwiftUI. I did not find the documentation very intuitive, and every view component seems to want some poorly described parameters. To top it off, it doesn't look that great.

Anyway, here's a few things I made for class:

Photo App

The entry app that was used for learning the SwiftUI basics. It takes photos and puts them in a list where you can add text and mark your favourite pictures. No picture here because this picture is from the simulator, so have a ladybug instead!

Memory

This was the first on-your-own assignment. It's your normal game of memory, except the tiles can be set based on the user's preferences. Data has to be passed from view to view using State and Observed Objects. Here is the view of gameplay. The blank circles are empty or solved tiles.

Security Camera

No picture yet as it is still underway, but here is a description: One part of this bonus lab was an app that listens for incoming connections, receives photos, and displays them for the user. The second part was an app that would take photos on a user-defined timer and send them to a listening app of your choice on the same network. It was a tougher project, but working in teams made it manageable.

Round Up

Although these areas of expertise aren't for me, it didn't hurt that they were taught by some of my favourite instructors at the college. I still have some big ideas that I would like to try out, including a handful of little games I've thought up over the years and an interactive mapping app. First, I have one more big gaming project for school that I'll be happy to share soon.

If you enjoyed these and would like to take a closer look, find their repositories on my GitHub.