We created a game similair to GeoGuessr. The players will be randomly shown a satellite picture from a popular city around the world. At the beginning of the game the map won't be visible and there are some clouds over the map. The goal of the player is to brush away as little as possible of the clouds to recognize the place he is located in. The player will give his answer by placing a pin on a map that is displayed on the lower left side of the screen. The scoring will be based on points. Depending on the game mode points are computed by time, accuracy of guess and amount of clouds brushed away.
Check out a deployed instance of the game here: sopra-fs21-group-24-client.herokuapp.com
Associated Back End repository can be found here: Server Repository
Data & Reports regarding the project: Data Repository
- Technologies
- High-level components
- Launch & Deployment
- Illustrations
- Roadmap
- Authors and acknowledgment
- License
Our geography-game is a node application running React JS with Javascript. For our UI components we used semantic react. The remaining dependencies are rather small and serve just very niche purposes that accelerated our dev process (Playing Sounds/ Alerts / Animations).
Besides the general react project structure our application can be split into 5 different parts:
- Authentication
- Launch
- Home
- Lobby
- Game
Authentication contains login and register components used to facilitate the entire login/register process for our application and they are implemented on the Launch Screen.
The Launch Screen is the first page a user lands on when navigating to our app. It displays a nice background video and allows the user to register or login.
The home screen has many responsibilities. It cycles in a lot of component leading up to the start of a game. The selection of the usermode/gamemode, updating ones profile, logging out and displaying a scoreboard of all user highscores for the different game modes. Code: Home Module
The lobby screens module consists of two major components, a screen and associated react components to join a lobby and the lobby screen itself for waiting till the game start. Code: Lobby Module
The game screen is the most compley of all our components as it handles most of the FE gamelogic, displaying of satellite-imagery, interactive map for dropping pins, displaying of scores, playing sound-effects and manipulating the satellite image (clouds / pixelation).
We require latest node & react for bugfree running of our application (Date: June 2021).
To get all the required dependecies needed for our application:
npm install
For hot reloading and running our application:
npm run dev
For building a "compiled" version of our application run:
npm run build
For running a "compiled" version of our application:
npm run start
Our application requires a running BE. You can find our BE repo and installation guide here.
To repoint the FE requests to a url of your liking (local/external URL) edit the getDomain.js File.
On the Application's Home Screen you can see the current leaderboard of all the Gamemodes. From here you can choose to start a Single- or Multiplayer Game. In the header your current Highscores are displayed. By clicking on your name you have the possibility to change your user data. If you choose to join a Lobby you will see this lobby screen. Choose the game mode / visibility on the left and see the invite key on the right to invite friends to your private game. This is what you see during the game. You can place your guess on the minimap on the bottom right. In the header you see the most important stats about the current round. After Submiting a guess you'll be navigated to the Score Screen. Here you can see your current score aswell as the distance between your guess and the solution. After 10 seconds the next round starts.For the following two features help would be very much appreciated.
A component similair to the gameMode/userMode selection that lets the user select if they only want questions from places in Switzerland, Europe or Worldwide.
A gimmick to add would be red tinting the satelitte image more and more in the last 10s of each round, fo added game tension.
This project was started using the following back end template provided by the University of Zurich.
- Claudio Gebbia - @claudioge
- Jérôme Hadorn - @jeromehadorn
- Hoàng Ben Lê Giang - @benlegiang
- David Diener - @Dave5252
- Philip Giryes - @Pieli
This project is licensed under the MIT license. Check out the License text here.