Update 1 – The Basics

Learning how to use Godot has proven quite the challenge, not that I didn’t expect to receive one. Primarily the biggest obstacle is learning the engine’s unique scripting. It’s not very similar to other programming languages that am familiar with (Java, C++) and the learning curve is substantial, particularly for someone trying to just jump right in to the thick of game development. Nevertheless, I’ve been working on informing ourselves about Godot and how it fundamentally works. The following are demonstrations of different types of character (or Node) movement.

Link to video demonstrations: https://drive.google.com/open?id=1qaJz9x1KQYljoqkF4CrNnxnr4FycyTT8

Movement Type 1:
The first video demonstrates 8-Directional Movement, a traditional style of movement in a 2D game which generally uses four separate directional inputs to result in 8 different directional outputs. This is the simplest form of movement of the three demonstrations. Also implemented are frame boundaries, which use the function clamp to ‘clamp’ the position of the character within the edges of the window. The piece of code used to construct this type of movement is found below the video.

Movement Type 2:
The next video shows a movement type very similar to that of the classic arcade game Asteroids. This type of movement uses Vector math to calculate the position and rotation of the character. It also implements a unique sliding effect that influences the speed and direction of the character if the character is in motion, but there are no more inputs. Essentially, the character drifts through the play space.

Movement Type 3:
The last video demonstrates movement comparable to a car. Similar to the previous style, this required the character to be rotated. However, such movement means that the rotation must align with the path on which the character is moving. Also, movement in the reverse direction is implemented as well.

Methodology

Determining the Best Software for this Project

 

After looking at several options, I came up with a list of various tools that were publicly available; each application has it’s own advantages and drawbacks, which I will outline here.

Here are a few programs that I took a look at:

  1. GameMaker Studio 2
  2. Godot
  3. Unreal Engine
  4. Unity Engine

Pros/Cons for Each

1. GameMaker Studio 2

Pros: GameMaker Studio 2 is a popular game engine known for its prowess in 2D games. Some of its most famous games include Hotline Miami and Undertale. Well liked for being friendly to digital artists, this engine has plenty of advanced features and boasts a relatively quick learning curve. It also supports a large community of developers to share resources and knowledge.

Cons: Not entirely drag-to-drop (it is necessary to learn to code). Additionally, the program uses its own scripting language, which ultimately demands a lot of extra time to learn. Lastly, this GameMaker Studio 2 is a rather expensive option, with pricing at varying tiers from $99 to $399.

2. Godot                       

Pros: Godot is a relatively new game engine, initially released in 2014, and is still actively and quickly being expanded and updated by its developers. It supports both 2D and 3D game building for games on almost any platform, and sells for the convenient price of free. Its node-based architecture allows users a flexible and powerful experience. The engine also comes with its own high-level debugger, which is tremendously useful and similar to those used in computer science classes at Ohio State. Also, Godot is open source, which means if the game engine is not capable of doing what is desired, an extension to the program can be written and implemented in to the actual application itself (at this point, I’m not doing anything advanced enough to require this, but being open source is a nice feature, nonetheless). Lastly, Godot is under an MIT Licence, which not only permits open source, but also means that any work a user makes is independently theirs and only theirs.

Cons: This engine is not at all drag-to-drop, making the learning curve a bit steeper than the previous game engine. Godot also uses its own scripting language, and while this language is immensely important and useful, learning a new language is still time consuming and limiting while the user is new.

The next two game engines, Unity and Unreal, are currently the most popular engines in the industry. Quickly, I realized that with great power, also often comes great complexity. It was almost immediately clear that these programs were meant to be used by professionals, or at least people more experienced in game developing than us. The user interfaces alone are complex and look rather overwhelming to someone with little knowledge of how to use them. Despite them being primarily free (premium versions of Unity are subscription based) and having massive followings and engaged active communities, I eventually decided it would be best to try simpler engines.

 

Overall, GameMaker Studio 2 seemed like it had the most advantages in areas that I was looking for, with Godot following right behind. However, with GameMaker being priced a minimum of $99, a less than optimal proposition for college students, Godot seemed like the more financially acceptable choice.

 

Planning Phase

Name(s): Justin Holderby

————————————————-———————————————————————-

Project Area (Math, engineering, STEM education, etc.):

Computer Science, STEM education, Game Development

————————————————-———————————————————————-

The following timeline was completed as a part of the project proposal and was approved by STEM Scholars leadership. Target dates are permitted to be flexible if necessary.

Your project needs to be completed no later than April 1st of Spring Semester in order to get your poster approved and printed before presenting. What is your proposed timeline?

 * * * * * GLOBAL PANDEMIC: COVID-19 HAS DRASTICALLY ALTERED THE CAPSTONE TIMELINE * * * * *

Now – August 23rd : Conceptualization and Research Phase

August 23rd – September 1st : Further Brainstorming (Determining which software and tools will be required to complete the project)

September 1st – October 1st : Familiarization with Development Software

October 1st – January 1st : Coding and ePortfolio Posts (Intro, planning, update 1)

January 1st – March 1st : Testing and Debugging

March 1st : Begin writing paper. Potentially add new features to game (i.e. extra levels, music, improved art style).

March 15th : Begin assembling poster.

APRIL 1ST : Turn in Paper.

APRIL 5TH : Turn in Poster.

Capstone Introduction

As somewhat of an avid gamer myself, I find the aspect of Game Development a fascinating idea and a promising potential career path. Being a student in computer science will likely give me the tools and resources to pursue that course if I determine that being a game developer is something that I would like to do in the coming years. The average person may likely assume that the gaming industry is small or slow, but in fact, the opposite is true. According to a report published by GlobalData in April 2019, the gaming market was worth $130 B last year, and is likely to explode to $300 B by 2025. With such an auspicious outlook for the future of the industry, it would certainly be advantageous to learn some basics about Game Development, whether it be game engines, programming languages, modeling, or other relevant skills.

The purpose of this particular project, ultimately, is to gain further understanding of what it takes to be a Game Developer. Using professional grade software, I will focus on learning basic techniques and apply those techniques in various examples to demonstrate comprehension of those skills. I will determine the most beneficial yet powerful tools to use; capability, usability, and cost, are all important criteria that I have deemed necessary. Being new to any software, program, or skill will undoubtedly take plenty of time to grasp without prior experience, which is fundamentally why this is a perfect opportunity to open another door for the future.