Skip to content

Commit 1fbd459

Browse files
authored
Merge pull request #146 from ubclaunchpad/showcase
put showcase in readme
2 parents 32055ea + f6c4de5 commit 1fbd459

9 files changed

+96
-20
lines changed

DEVELOPMENT.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Development
2+
3+
## Getting started
4+
5+
Go ahead do the following to clone the repository and install the project's dependencies:
6+
7+
```bash
8+
git clone https://github.com/ubclaunchpad/ubcsim2.git
9+
npm install
10+
```
11+
12+
You can run compilation, linter, and tests with:
13+
14+
```bash
15+
scripts/build_check.sh
16+
```
17+
18+
## Build the app and deploy to GitHub Pages
19+
20+
run the following command to build and deploy
21+
22+
You can run your page locally using ```npm run start```, this will automatically rebuild your app as you change files and supports hot module replacement for fast development.
23+
24+
OR
25+
26+
To build your app and put resulted files in folder /build using ```npm run build``` . (If you ever changed your .ts or .html, rebuild to compile .ts files to .js).
27+
28+
Deploy on GitHub Pages using ```npm run deploy```
29+
url: https://{github-account-name}.github.io/{repo-name}
30+
https://ubclaunchpad.github.io/ubcsim2

README.md

+66-20
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,77 @@
22

33
[![Build Status](https://travis-ci.com/ubclaunchpad/ubcsim2.svg?branch=master)](https://travis-ci.com/ubclaunchpad/ubcsim2)
44

5-
UBC Simulator 2 (working title) is a 'choose your own adventure' style browser game where the player tries to survive a year as a student at UBC.
6-
This project is based on the [game](https://slacknotes.com/ubcsimulator) on Slacknotes, go check it out!
5+
UBC Simulator 2 is a 'choose your own adventure' style browser game where the player tries to survive a year as a student at UBC.
6+
This project is inspired by the [original game](https://slacknotes.com/ubcsimulator) on Slacknotes, go check it out!
77

8-
## Getting started
8+
## The Team
99

10-
Go ahead do the following to clone the repository and install the project's dependencies:
11-
```bash
12-
git clone https://github.com/ubclaunchpad/ubcsim2.git
13-
npm install
14-
```
10+
### Developers
1511

16-
You can run compilation, linter, and tests with:
17-
```bash
18-
scripts/build_check.sh
19-
```
12+
- Cheuk Yin Ng
13+
- Eloise Peng
14+
- Robin Reyes
2015

21-
## Build the app and deploy to GitHub Pages
22-
run the following command to build and deploy
16+
### Designers
2317

24-
You can run your page locally using ```npm run start```, this will automatically rebuild your app as you change files and supports hot module replacement for fast development.
18+
- Jenny Zhang
19+
- Tony Wu
20+
- Vita Chan
2521

26-
OR
22+
## The Approach
2723

28-
To build your app and put resulted files in folder /build using ```npm run build``` . (If you ever changed your .ts or .html, rebuild to compile .ts files to .js).
24+
Our team was really captivated by the humor and charm of the original game; we thought that events in the original game were written very well, and truly spoke to the student experience at UBC. However, on paper, the game is just a series of events presented to the player in a random order in which the player's choice would have some kind of consequence on the player's likelihood of beating the game. Given this basic structure, our team felt that there was a lot of potential to make the experience more interactive and diverse.
2925

30-
Deploy on GitHub Pages using ```npm run deploy```
31-
url: https://{github-account-name}.github.io/{repo-name}
32-
https://ubclaunchpad.github.io/ubcsim2
26+
We drew a parallel of the basic structure of the original UBC Simulator to the classic game [The Oregon Trail](https://en.wikipedia.org/wiki/The_Oregon_Trail_(series)) - both games attempt to simulate a real life experience through a series of events that capture the spirit of that experience. On a technical level though, The Oregon Trail had many more features that made the experience it was trying to simulate more immersive than what the original UBC Simulator was able to do, namely:
27+
28+
- time sensitive events
29+
- minigames
30+
- campaign personalization
31+
32+
which became the main features we wanted to include in our iteration of UBC Simulator.
33+
34+
The minimum viable product (MVP) for our project was to at least support the same type of gameplay implemented in the original UBC Simulator, being that we simply allow for the player to run through a campaign of events, giving the player choices that would impact their stats of amount of sleep, number of friends, and GPA. Given this, one of the earliest things we did was drafting up a list of events we could put in the game. Each member of the team had different kinds experiences at UBC, so we were able to come up with a diverse set of events.
35+
36+
![alt text](showcase_images/event_drafting.png)
37+
38+
Another thing we did early in the process was protoyping the UI of our application, whose design we drew heavy inspiration from The Oregon Trail and the original UBC Simulator.
39+
40+
![alt text](showcase_images/ui_prototypes.png)
41+
42+
The planning we did earlier on in the development of our project proved to be a good foundation for the work we did throughout the year.
43+
44+
## The Technology
45+
46+
Since our projects is pure front end work, our tech stack is not that complicated. Initially, we planned to develop on this project with pure TypeScript, but this proved to be us underestimating the complexity of what needed to be done. We eventually incorporated more technology into our project which are very relevant in the industry today, and working on this project served as good practice.
47+
48+
### React
49+
50+
Using React's state management proved to be useful in the way we decided to build our game engine, as supposed to creating our own state management system. Using React also provided our project with some modularity, allowing the project to more easily support development on a team.
51+
52+
### Unity
53+
54+
We chose Unity as our primary driver for developing minigames mainly for the utility of not having to create a new game engine for every minigame we want to create. This helped us expedite the number of minigames we were able to include in the game, as without it, we could have potentially gone the whole school year without finishing a single minigame. Luckily, we were able to find a library we could use to display WebGL builds of Unity projects in a React project in [React Unity WebGL](https://github.com/elraccoone/react-unity-webgl).
55+
56+
## The Art
57+
58+
We went for a 90s game console look, so pixel art was an appropriate choice! This art style also makes creating templates a lot easier such that art between each designer is consistent.
59+
60+
### Backgrounds
61+
### Characters
62+
63+
To standardize character creations, we created a character template system with different skintones, hairstyles, clothing, shoes, and accessories options.
64+
![alt text](showcase_images/character_sheet.png)
65+
66+
### Animations
67+
68+
Minigames have moving parts and animations. Below is the sprite sequence.
69+
![alt text](showcase_images/animation_sequence.png)
70+
![alt text](showcase_images/skaterboi.gif) | ![alt text](showcase_images/squirrel.gif)
71+
72+
## The Challenges
73+
74+
As with any team, our team had our share of struggles in working on this project together.
75+
76+
First of all, our team started out having a few more members than we currently have. UBC Launch Pad in general asks a non-zero amount of time for each member to dedicate every week, and while it's easy to say you can make that commitment during the recruiting process, it's a different story when students are forced to juggle many other commitments in the heat of the school year. While our team was struggling with commitment issues with some former members, it was difficult to get work done when the tasks of less committed members were blocking the progress of other tasks. As the year progressed and it became more clear which members had the capacity to finish their tasks on time, it became easier to plan what tasks to prioritize on a week to week basis. Fortunately, the transition to having less hands on deck went smoothly as our current members took on the additional load of work well.
77+
78+
On the topic of having the work of some being blockers for others, this issue was something our team struggled with throughout the whole process. Being purely a front end project, communication between the developers and designers was key to getting most aspects of the project done. There were many instances where the assets of the designers were left sitting on the side because the features they were meant for have not been developed yet, or some features could not be fully implemented because of some missing assets. This fact gave each member a bit more responsibility, as they are not only responsible for the work they are doing being a step to completing a project, but more than likely another member of the team is waiting for their work to be finished. This was most emphasized towards the beginning and end of the project - at the beginning much of what the designers had worked on could not be integrated due to the work needed by the developers to set up the game engine and general infrastructure first, and towards the end, when most of the infrastructure has been put in place, there was a lot of design work to do to give the project more polish.
37.7 KB
Loading

showcase_images/character_sheet.png

195 KB
Loading

showcase_images/colourway1.png

25.4 KB
Loading

showcase_images/event_drafting.png

707 KB
Loading

showcase_images/skaterboi.gif

9.44 KB
Loading

showcase_images/squirrel.gif

4.2 KB
Loading

showcase_images/ui_prototypes.png

228 KB
Loading

0 commit comments

Comments
 (0)