technical architecture - Nicky-Nice-Games/ggk-UnityProject GitHub Wiki

Technical Architecture Contents

Technical Architecture

Communication Software

Our team is going to be using Discord for communication. Everyone on our team is already familiar with using Discord, and most of this project involves something new, so having something that everyone knows how to use will help. Using other options would need onboarding or new accounts, which is not ideal. Additionally, Discord has custom emojis and encourages a tight-knit community, which will help everyone feel comfortable and work together well.

Version Control

We will be using GitHub for version control. It is an industry standard, and everyone on the team has experience working with it. Other alternatives require payment and/or onboarding time. It also offers features such as issue tracking, projects, and wikis.

Game Engine

We will be using Unity as our game engine. It's much better for low fidelity games than other engines. Most of our team is already familiar with using it, which means we don't need as much onboarding. Additionally, Unity supports multiplayer, controller support, and data transfer, all of which are great for this project.

Organization

Coding Standards

  • Variable names must be in camelCase (no delimiter, first word in lowercase, subsequent words capitalized)
  • Properties and Methods must be in PascalCase (no delimiter, all words capitalized)
  int myInt;
  bool myBool;
  float myFloat;

  static void myMethod();
  public int myInt {get; set;}
  • Classes and Structs must be their own files (don’t have more than one class or struct defined in one file)

How to set up classes

  • Uncompiled and Runtime error code must not be pushed to any repo, unless it is commented out and doesn't run.
  • XML comments should be used to describe functions and methods. They can be made by putting three “/” before any declaration of code.
  • Descriptive names lessen the need for comments but any complex behavior must be commented and described.
  //THIS CODE DOESN'T WORK
  //public private string myInt(bool myBool)
  //{return bool + 17.0f; }


  ///<summary>
  ///This is an XML comment! I can put down paramenters and return types
  ///</summary>
  /// <param name = "num1"></param> 
  /// <param name = "num2"></param> 
  /// <return> result of num1 * num2 </return>
  public int multiply (int num1, int num2)

Unity

To make finding files easier, files are sorted by type and used in the Asset folder of the unity project. Images and models contain files respective to their name like png, jpg, fbx. Scenes contain unity scene files. Scripts contain C# scripts and are further separated into more folders to keep scripts of similar use together.

How to organize unity files

Git/GitHub

Comment and describe on your commits. Title them the general change and describe what actually happened towards the change. This also apply to names and titles branches as well.

How to name branches How to title and comment commit

Pull requests should be descriptive of the feature added or change made to the branch you are merging into. Large changes must be checked by a GSP lead before going out.

How to create a pull request

⚠️ **GitHub.com Fallback** ⚠️