5. SWE Project Requirements - EmulairEmulator/Emulair-Lemuroid-clone GitHub Wiki

If you aren't a lecturer/professor, ignore the following

What is our vision?

As stated in the Philosophy section, the primary goal of Emulair is to combine the ease of use and simple but accessible interface of Lemuroid with RetroArch's extensive customizability and features, while also adding support for standalone emulators.

What features will we be implementing?

As stated in the "🏗 In progress" tab from our project backlog, we will be implementing the following features.

Storage liberation and access:

  • saving games in a user accessible folder, for easy files backup, copy-pasting and modifications

UX and info screens:

  • a details bottom sheet which appears when long pressign a game or a system, containing relevant information about that item
  • a custom splash screen that shows a little animation while the app is loading
  • an intro screen detailing how the app can be used and what it tries to accomplish

UI rework:

  • a reworked layout for the settings screen, meant to make it more accessible
  • a reworked categorization of the settings which ranks the most important ones to the top of the screen and separates the destructive ones (such as data deletion) from the rest of the pack
  • a better layout for phones in landscape mode

Fancy graphics:

  • a parallax effect for the big UI elements containing images, such as the "Jump back in" game card
  • a quality of life update of the system sprites, which ranges from rearranging their positions to reworking them completely

What non-functional requirements will we be implementing?

Performance:

  • loading times should be fast in order to ensure a smooth user experience

Error handling and reporting:

  • the app shouldn't crash, no matter the error, but instead display a crash screen with relevant info
  • the app should offer an error report screen that automatically sends data to the developers for analysis

Ease of access:

  • the UI should be intuitive and easy to use
  • the app should contain explanations for difficult to perform tasks (such as changing settings to maximize performance)

Technical performance:

  • the source code should be clear and well documented
  • coding styles should be enforced

What is our activity/state diagram?

Access our diagram from the State Diagram (Android and Web) section.

What are our User Stories?

Storage liberation and access:

  • As a user, I want to be able to access all of my save files from a folder I created, not the default Android/data folder which is inaccessible to most file managers out there

UX and info screens:

  • As a user, when I long-press a game, I want a detailed screen to appear that includes buttons such as "Restart", "Run", "Add to favorites / Remove from favorites" and display additional information such as release year, regions, languages, etc
  • As a user, I want a visually appealing splash screen when launching the app
  • As a user, I want an introductory screen that provides essential information about the app, and I want to be able to skip this screen if I have already seen it

UI rework:

  • As a user, when I use the app on a landscape-oriented phone, I want the layout to be optimized for this orientation
  • As a user, I want the app settings to be organized for easier navigation
  • As a user, when navigating settings, I want potentially risky actions like "Factory Reset" to be clearly indicated

Fancy graphics:

  • As a user, I want a visually engaging effect for the "Jump Back In" game cover

Where can I access the backlog from?

The backlog can be accessed from the Projects page.

Where can I access the roadmap from?

The roadmap can be accessed from the Projects page.

What user personas do we target?

User type 1 (early to mid zoomer):

  • biological sex: any
  • age: 26-32
  • interests: modern video games of any genre
  • typologies:
    • comes from a low to mid income family
    • spends at least 1.5h on the Internet every day
    • spends at least 1h gaming every day
    • has started gaming at ages 8-10
    • has completed (not just played) at least two games of any genre on any platform among the following: Sony PlayStation 2, Sony PlayStation 3, Sony PlayStation Portable, Nintendo GameCube, Nintendo Wii, Nintendo Game Boy Advance, Nintendo DS, Nintendo 3DS
    • is nostalgic over video games they played in their childhood
    • wants to check out new games they didn't have a chance to in their childhood

User type 2 (late millenial):

  • biological sex: any
  • age: 26-32
  • interests: modern video games and retro video games of any genre
  • typologies:
    • has any kind of income
    • spends at least 1h on the Internet every day
    • spends at least 1h gaming every day
    • has started gaming at ages 10-12
    • has completed (not just played) at least one game of any genre on any platform among the following: Sony PlayStation 1, Sony PlayStation 2, Nintendo GameCube, Nintendo Game Boy, Nintendo Game Boy Color, Nintendo Game Boy Advance, Sega Saturn
    • is nostalgic over videogames they played in their childhood/teenhood
    • believes game console companies should implement backwards compatibility on all their platforms

User type 3 (late gen x-er/early to mid millenial):

  • biological sex: any
  • age: 33-47
  • interests: retro video games of any genre
  • typologies:
    • comes from at least a mid income family
    • spends at least 30mins on the Internet every day
    • has started gaming at ages 13-15
    • has completed (not just played) at least one game of any genre on any platform among the following: Sega Genesis, Nintendo Entertainment System, Super Nintendo Entertainment System
    • is nostalgic over videogames they played in their teenhood
    • believes in the right of art preservation
    • prefers to stick to games they played before

What is our user journey map?

On app launch, the user lands on the games page. The bottom bar allows the user to navigate to the games page, the systems page and the settings page. The games page has a search icon that allows the user to search for games. The games, systems and settings pages have a "more information" button on the top left corner that allows the user to acces a page containg frequently asked questions about the app, while the top right corner has a "profile" button that leads the user to an empty profile page that is still in development.

When clicking on a system from the systems page, a new page containing all the games of that system appears. When clicking on one of the sections in the settings page, a new page with more settings appears. When clicking on a game in the games page, in the systems's games page or in the searched games list, the user is sent to a game activity that loads their game. During the game, the user can long press a menu button to pause the game and open a pause menu, which allows them to save their game state, load one of their previous states, change emulator settings, close the pause menu or quit the game and return to the games page.

Where can I find the UI mockups?

The UI mockups are a work in progress but can be accessed here: https://www.figma.com/file/rl2NZr4urttkIMgaKRas24/Emulair-Android?type=design&node-id=115%3A66&mode=design&t=36ZFqkd5ed8RAkb4-1