IN-DEPTH POST #3 – PROGRAMMING FOR VIDEOGAMES

In-depth Post #3 – Programming For Videogames

Justin C.

Some Questions I will be answering

What went particularly well during your mentoring sessions?

What learning challenges emerged?

What did you do to hold yourselves accountable for the learning?

So far, communication with my mentor has been excellent. The framework of our meetings has worked very well. I state my session objectives at the start of the meeting, and we spend the majority of our time addressing these. He responds to my questions and expands on topics when I ask him to. In the last bit of our sessions, I ask Conor for something I can focus on for the next two weeks; this week, it was learning Unity and going through some tutorials, and he gives me some resources to help me learn the topic such as youtube videos or websites. In our meetings, we generally make relatively few assumptions. Because of the nature of my project, Conor can look at my code whenever I ask a question in order to directly address the problem and observe any changes I make in real-time by viewing the program I am working on through screen-share on zoom. So far, I have not been held totally accountable for the work I perform between sessions, and sometimes wasn’t able to get through all the of “homework” assigned to me by Conor. As my project becomes more difficult completing said homework will become a more adamant task. Conor, on the other hand, has been wonderful at answering all of my questions and enabling me to manage the project, but if not everything can be covered in a meeting, I am free to write him an email if an issue occurs. Conor is a great mentor with all the knowledge needed to handle my queries and concerns.

Programming

I started out by building off of the processing “moving balls” project that I had been working on.

I gave the balls a randomized shade of grey and set the outline of each ball to red

I changed my code to set a random number of balls from 15-100, a random speed from 1-5, and a randomized colour. I also changed the background of the program to be white as it allowed for the colours to pop out more.

Changed the colour variable from an “integer” variable to the “color” variable as that was the compatible variable type.

And with this I am now moving on to using Unity which will allow me to focus more on the creation of games as there are many more tools and abilities in Unity specific to game development.

Some tips and facts I learned about programming:

  • You can organized code and set notes using // (as seen above)
  • The backslashes are specific to Java and C programming languages
  • You can spread out a line of code into multiple lines aslong as you use commas and semi-colons to indicate where the line stops
    • Ex. The first line could be changed into the next set of lines to make it look neater and more organized (as seen above)
      • Ball b = new Ball((int)random (15, 50), (int)random (width), (int)random (height));

or

      • Ball b = new Ball(

(int)random (15, 50),

(int)random (width),

(int)random (height))

Game Design

This meeting was heavily based on game design as code is not the only aspect of creating a game. To create a fun and functional game you must understand the elements of a game and how to develop them.

Video game design is the process of designing the content and rules of video games in the pre-production stage and designing the gameplay, environment, storyline and characters in the production stage. Some common video game design subdisciplines are world design, level design, system design, content design, and user interface design. Within the video game industry, video game design is usually just referred to as “game design”, which is a more general term elsewhere.

Game designer and developer Robert Zubek defines game design by breaking it down into its elements, which he says are the following:

  • Gameplay, which is the interaction between the player and the mechanics and systems

  • Mechanics and systems, which are the rules and objects in the game

  • Player experience, which is how users feel when they’re playing the game

Ideas for Game

This was just a brainstorming session and none of these ideas are final. This is a rough idea of some concepts for a game that I may create.

2D Platformer: Parkour

  • Focuses
    • HP (Hitpoints, Health)
      • Take damage from Spikes, Lava, other obstacles, etc.
  • Strategic movements or Fast-Paced thinking as you go
  • Movement-based games such as Parkour
  • What type of movement?
    • Strafing sideways
    • Jumping
    • Special movement capabilities
    • Procedurally Generated such as Temple Run or set by the developer (me) or set levels
  • Movement
    • We want to be able to walk, sprint, jump, crouch, slide
      • Sprint + Crouch = slide
      • Double Jump
      • Jump while on wall = Wall Jump
  • Upgrades
    • Ability to upgrade stats such as movement speed, jump height, wall jump distance, HP
    • Items
      • Equipment such as “Obsidian Treading Boots” which allow you to walk on water for 3 seconds at a time.
  • Objectives:
    • Obtaining a certain item
    • Arriving at a checkpoint 
    • Defeating an enemy
  • Obstacles:
  • Spikes, Lava, Pits, Oil or Tar
    • Tar slows you down and you can’t jump
  • Levels
    • Point scores
    • Timed
    • Points from coins
    • Points from temporary Power-ups
    • Linear course of levels
    • Branches in levels where you need upgradesThis makes players play the other levels and have to come back to go down that branch after purchasing levels
  • Character
    • Characters with different abilities 
    • Unlockable customization
    • Changing colour of character
  • Audio
    • Voice lines / Sound effects??
    • Movement noises
    • Grunt while landing from high places
    • Footsteps
    • Game soundtrack

What to do before next meeting:

  • Brainstorm ideas in my notebook for levels and procedures
  • Think about the code and try and write it down
  • Look into game mechanics and what makes a game fun

Leave a Reply

Your email address will not be published. Required fields are marked *