Design Documentation
The Atlas Project Design Document
Abstract
This document describes the design of the The Atlas Project. It outlines the goal of the project, the target audience, and the constraints, and in doing so allows us to design the best project within those limitations.
Mission Objective
Games education is rapidly approaching a critical juncture. As development tools have become more widely available and publishing restrictions soften, the demand for substantial resources to learn game development has grown tremendously. Likewise, as games and the techniques involved in producing them grow in complexity, the amount of subject coverage professors can give to their students has shrunk proportionally. As an accredited university program with access to industry resources and expertise, the Interactive Games and Media (IGM) program at the Rochester Institute of Technology (RIT) is in an excellent position to look towards the future of games education and act towards the benefit of game developers worldwide. The goal of this project is to produce a freely-accessible, highly-scalable tutorial platform populated with projects that explore game development topics and illustrate connections with other projects, while opening a door to the open-source community to contribute even more content.
Constraints
-
The product should be highly-scalable. The site should be capable of handling any number of projects. The back-end should be able to handle a large set of user and project records and rate limits should be kept in mind.
-
The product should be comprehensive, but imperfect. Reimplementing the entire IGM curriculum is a major undertaking well-beyond the scope of the project. Making projects is an important part of content-production, but it is too big a task to create content for all facets of the IGM programs. As such, the means in which projects are loaded from GitHub by the back-end and from the back-end by the front-end should be highly-modularized.
-
The product should be built in the same spirit as the project. The Atlas Project is designed to make games education accessible to a wider breadth of people. As such, the internals of Atlas should be well-documented and OSS licensed. They should be hosted on a public source hosting platform such as GitHub and should serve as a referenceable real-world example of its technologies.
Target Audience
IGM Students - The Atlas Project lessons should be created with the IGM curriculum in mind. Initial concepts, practices and categories of coverage should be selected around the core and advanced offerings of the IGM department. Atlas also should consider covering that which the IGM curriculum should cover, but does not. It should present material clearly and concisely, and should not require experience outside of the material and its prerequisite tutorials.
Non-IGM Students - The Atlas Project should reinforce important concepts and practices to IGM students, but it should be primarily designed with the public in mind. Tutorials should be accessible to anyone with access to GitHub and should not use RIT/IGM-specific terminology or require RIT credentials or IGM-restricted code in order to view and run.
Resources
The Atlas Project will provide access to a potentially enormous selection of tutorials, as well as a system for processing contributions. This section describes the resources we will provide.
Backend
The backend will be hosted on Heroku and run as an Express app. The backend is intended to provide unfettered access to the tutorial data to the client. If the client depended directly on GitHub, it would be based on GitHub’s uptime and rate-limits. The backend will provide an endpoint for retrieving all tutorials, a query-endpoint to retrieve tutorials by name, and an endpoint to sync the backend with GitHub data. The sync endpoint requires that whomever invokes it is authenticated and designated as an admin on the IGME-RIT organization on GitHub.
App Dependencies
Heroku Dependencies
- Hobby tier or higher for maximum functionality
- MongoLab integration
Contribution
The flow of contribution for new tutorials to Atlas will be as follows:
- A feature request is made to the contribute repository requesting a tutorial type.
- The discussion will be used for maintainers and whomever would like to contribute a tutorial to guide its design.
- A tutorial will be added to the contribute repository as a pull request to the root directory for triaging.
- An active maintainer will inspect the tutorial and either approve it, provide feedback, or reject the submission.
- An active maintainer will create an igme_config.yml in the root of the tutorial’s folder for use with the Atlas front-end.
- An active maintainer will break off the tutorial into its own repository under the IGME-RIT organization and remove the tutorial from the contribute repository.
Sample igme_config.yml
series: Introduction to Graphics
title: Skybox
author:
name: IGME-RIT
email:
github: igme-rit
description: This example demonstrates rendering a skybox.
language: C++
tags:
- Graphics
extra_resources: # Links to additional or extra resources
- title: Unity engine Skybox
link: https://docs.unity3d.com/Manual/class-Skybox.html
connections: # Repository names of each parent connection
- series: Introduction to Graphics
title: Normal Mapping Tutorial