Skip to content

Documentation

nicoleepp edited this page Apr 1, 2017 · 36 revisions

Access the current state of the game now at http://singedfeathers.online

  • Chrome sometimes doesn't update it immediately so please use Firefox.

How To Play

https://github.com/Devin0xFFFFFF/comp4350-project/wiki/How-To-Play

Deploying to iOS

https://github.com/Devin0xFFFFFF/comp4350-project/wiki/Deploying-to-iOS

Deploying to Android

Option 1

  • Open project in unity
  • Click File -> BuildSettings
  • Use gradle, and check Development Build
  • Press Build
  • Move apk file onto android device
  • Install on android device

Option 2

  • Open project in unity
  • Click File -> AutoBuilder -> Android
  • Get apk from SingedFeathers/Builds/Android
  • Install on android device

Architecture

Model View Controller

  • The structure of the code follows an MVC like architecture. When a user interacts with the system Unity creates an event which is processed by the view. The view processes the event by invoking calls through controller interfaces. Controller methods which are invoked through the calls then modify the content of the models. These changes are then accessed by the view through the controller interfaces when needed. Unlike most MVC architectures, the view is a bridge between Unity logic and the core logic of the system and acts as the input/output access for the user. Below is a high level diagram of the architecture.

Architecture Diagram

Tests

Client

  • The code is divided into Unity specific code (SingedFeathers) and general C# code (CoreGame).
  • We are using an MVC-like structure with the models and the controllers in the CoreGame C# code, and the views in the Unity code.

Server

Interfaces

  • These interfaces all live in the CoreGame project
  • ITileController, IPigeonController, and IMapController are straightforward MVC controller interfaces.
  • ITurnController is so that the TurnController can be tested easily with NSubsititue.
  • ITurnResolver is that we can stub out turn resolution down the road.
  • ICommand is like ITurnController and is to test Commands.

Persistence

S3

  • Singedfeathersmaps bucket: holds map data, each map file is named: ${mapID}.json
  • Singedfeathers.online bucket: hosts our static website

DynamoDB

  • SingedFeatherMaps table holds map metadata, primary MapID key matches map filename in S3

Road Map

  • We have a version of the game up on singedfeathers.online
  • We plan on getting a game server and coordinator for the final snapshot
  • We have been focusing on getting a core game up in Unity over servers so they will be easy to do when the time comes

Repository Structure

CoreGame

  • Where our core game logic is located

LobbyServer

  • Multiplayer Server Lobby code

MapServer

  • Map Server code for serving and storing game maps

RawResources

  • Raw resource files used to create unity graphics

SingedFeathers

  • The unity project and 'View' of our code
  • The code logic is contained within the SingedFeathers/Assets/Scripts/ folder
  • The tests for our CoreGame logic are within the SingedFeathers/Assets/Editor/ folder
  • The rest of the folders Plugins, Prefabs, Scenes, and Sprites are all resources used for the unity project to work correctly

Travis

  • Travis log and script files for installing/building our project are here.