4. SDM project requirements - EmulairEmulator/Emulair-Lemuroid-clone GitHub Wiki

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

Where can I access the live demo from?

We have two live demos, the first one and the second one.

Is the code documented?

Yes. Check the Code documentation section and all the comments we left inside the source code.

Where can I access the backlog from?

The backlog can be accessed from the Projects page.

What are our User Stories?

Take a look at the Added Features section in the README.md file. Below is a list of the same features, written in the "User Stories" format:

Expanding upon the emulators:
  • I am a gamer and I want a front-end with all the emulators in the world
  • I am a user with a low powered device and I want to be able to edit more settings so my emulators can work even better
  • I am a busy person and I don't have enough time on my hands to spend so many hours grinding in every game; I want to use cheat codes to ease some mundane tasks about video games
  • I am playing a hidden indie homebrew gem of a game, but Emulair doesn't want to detect the ROM file. Please update the game database so it includes more games
  • I am a user who likes to have more control over what emulators are used for what games, which is why I would love to see a feature that allows me to select between FinalBurn Neo and MAME 2003-Plus. I don't like that everty single arcade game uses FB Neo as its main emulator, and only if it doesn't work on FB Neo, it automatically falls back to MAME. However, this "fallback to other emulators" idea isn't bad, so maybe make it a separate toggleable option.
Improving navigation:
  • I am a beginner when it comes to emulation and I want a user friendly intro screen to concisely explain how to use this app
  • I believe your app should make logging into an account much more accessible, preferably with a separate profile screen easily clickable from anywhere
  • I am a user with a motor dysfunction and sometimes I accidentaly click important buttons; I would like to receive an action prompt pop-up after every important button press (such as saving games or resetting the app)
  • Why do I have to navigate to the settings screen just to be able to refresh the app??? Pls add swipe down to refresh and also rescan the games directory automatically whenever I'm restarting Emulair
  • My phone has a big screen and the back button isn't always accessible. Can you please add an option to close the pause menu without pressing the back button?
Improving the UI and making it more customizable:
  • I am using a Samsung phone with an AMOLED screen and I would love to see a special theme for this kind of screen to be implemented
  • Why do I have to enable the auto rotate option every time before I open this app? Why can't I just set the screen rotation once, directly from the app's settings, and have the games rotate every time I launch them without any extra user input????
  • The touchscreen buttons are too opaque and distracting, I want to make them a bit more transparent but I can't
  • The app is ugly on my tablet :((( pls fix
Quality of life:
  • RetroArch can open .7z ROMs, why can't Emulair do the same??? Isn't Emulair just a Libretro front-end????????
  • Bruh 💀 my mom called me while playing a game and when the call finished and I got back to the game, it restarted, and all my progress was lost 😭😭😭 why can't this app just save the game every 5 seconds or so, so I don't loose all my 2 hours worth of progress
  • It's cool that I can add games to a favorites list. Wouldn't it be cool to add systems to a similar type of list, either by pressing a button or automatically, based on usage?
  • Why are all my files located in the Android/data folder? Don't you know how inconvenient it is to always have to navigate to that location just so I can manage my save files? Why can't Emulair just use a regular folder inside the "normal" storage like RetroArch or PPSSPP does?
  • I am afraid of losing all my games' progress. Would you be able to allow users to save all their files inside a database? I'm not referring to games, only cheats, states, in-game saves, etc.

What is our UML diagram?

Check it out here: https://github.com/Emulair/Emulair-Android/blob/main/emulair-uml.png

What testing tools did we use?

We used Android Studio's local unit tests.

What bugs did we fix?

Take a look at the Closed Issues page.

How did we use an AI tool to aid in the creation of our project?

We used OpenAI's ChatGPT to test the automation of some otherwise boring code writing and to solve some specific, hard-to-Google problems. When it comes to DALL·E 2, we used it to create a concept for our logo. With DALL·E 2, somehow, the first prompt generated us an image we actually ended up using as concept for our logo. The other DALL·E prompts were used to simply search for a better result, which we couldn't find.

ChatGPT prompts:

  • I want you to create a custom android Preference in Kotlin
  • Create me the layout file "custom_preference.xml" for a SwitchPreferenceCompat with a material 3 switch button style
  • Add a TextView to custom_preference.xml so that SwitchMaterial and the TextView aligh horizontaly
  • Change the id of the TextView so that it matches with the default id of a SwitchPreferenceCompat TextView
  • Now change the id of the SwitchMaterial so that it, too, matches the default id of the SwitchPreferenceCompat switch widget
  • Now rename "custom_preference.xml" to "material_preference_switch.xml"
  • Now create another file named "material_preference_simple.xml" that is similar to "material_preference_switch.xml", but without the SwitchMaterial widget
  • Rename CustomPreference to MaterialPreferenceSwitch
  • Change "com.google.android.material.switchmaterial.SwitchMaterial" from "material_preference_switch.xml" to "com.google.android.material.materialswitch.MaterialSwitch"
  • Generate me a new "material_preference_switch.xml" file that uses "com.google.android.material.materialswitch.MaterialSwitch" instead of "com.google.android.material.switchmaterial.SwitchMaterial"
  • Make the MaterialSwitch aligned to the end of the LinearLayout
  • Make the TextView from "material_preference_switch.xml" have the same style, color and size as the default text from a SwitchPreferenceCompat
  • Take the file "material_preference_simple.xml", add another TextView for the Preference summary and set the id of the newly added TextView to the default one used by the Preference summary
  • Change the size, color and style of the summary TextView to match the one used by the default Preference

DALL·E 2 prompts:

  • "A drawing of a front facing mecha emu bird head, award winning 3D render" 🏆
  • Generated four variations of the image we ended up using
  • Generated four more variations of another image from the first prompt
  • Generated four more variations of another image from the first prompt
  • "A drawing of a front facing mechanical emu bird head made out of metal plates, award winning 3D render"
  • "A drawing of a front facing mechanical emu bird head made out of large metal plates in the style of Yoji Shinkawa"
  • "A drawing of a front facing mechanical emu bird head made out of large metal plates, video game final boss"
  • "A drawing of a front facing mechanical emu bird head made out of large metal plates, modern minimalist logo"
  • "A drawing of a front facing mechanical emu bird head, modern minimalist logo"
  • "An app icon of a front facing emu head"
  • "An minimalist app icon of a front facing emu head"
  • "An minimalist app icon of a front facing emu head, line art"
  • "A mechanichal emu bird head made out of opaque metal plates, with chromatic aberration effect on steroids"