Product Requirements Document

Problem Description

Learning to drive on the road has been easier for some people due to driving simulators. Driving simulators are able to help people understand how a car operates as if they were behind the wheel. However, many of today’s driving simulators are becoming outdated and fail to offer all of the functions that all of our newer models of cars offer. We need a driving simulator that can realistically demonstrate how cars function in today’s world.

Driving simulators are very fun to play and race in.

Scope

The scope for our project is limited to driving traditional modern vehicles in accurate-to-reality settings. Our settings are to only have roads, traffic signs, non-player vehicles, and buildings (or at the very least at a minimum). Our realism will be focused on the physics and ADAS operations of the car. Stretch goals include extra realism in the graphics, multiple maps based on real locations, a tutorial/learning option, car customization, multiplayer support, driving wheel/pedal support, and improvements to the minimum qualifications for the game (improved non-player vehicle AI, more elements in the setting, improved traffic systems).

Our market is towards both reckless gamers and those genuinely learning to drive.

Use Cases

For the following use cases, we will assume each user will start the game and be brought to a isometric, birds eye view of a city, they then select a vehicle and begin playing as that vehicle in the simulator.

The user will avoid accidents and obey traffic laws. The user continues playing and can pause the game to take a break whenever needed.

The user does not obey traffic laws and attempts to avoid accidents but fails to do so frequently. Each accident brings them to continue retrying until they are tired and return to the menu.

The user plays the game for a while and does well. As they play and earn achievements, they unlock new vehicles/maps/customization options. They continue to play until they unlock a vehicle they were wanting. Once they do they pause, return to the menu, and select their desired vehicle and play on a new map. (We may only have one map and have different starting points instead).

The user plays the game and leaves it without pausing the game. Vehicles on the road get backed up behind them up to a point. After a certain amount of time being idle, the user is automatically returned to the game menu.

The user pauses the game as soon as it loads to go through the settings and set everything to their liking. Once to their liking they select to save their settings and now their current and future playthroughs will use those settings until altered again.

Purpose and Vision (Background)

Our purpose is to create a driving simulator game that provides users with a realistic, modern driving experience that can be used for both a user’s enjoyment and/or education.

For the most part, past driving simulators have delivered an unrealistic experience in a variety of ways. Over the top physics, unrealistic colors and effects, lowered traffic risks, and failure to keep up with modern vehicles. All things that we strive to avoid.

We want to provide a true to the modern world driving simulator game that users can play feeling as if they were driving in the real world. Something that can prove useful for those in driving education and racing games.

Stakeholders

Potential Employers – no updates, no decisions

Competition Judges – no updates, no decisions

Project Partner – weekly updates, advice based off of our need

Project Groupmates – weekly updates, equal say in all decisions for the project and needs to be fully up to date with everything going on in the group

Project TA – weekly updates, guidance based off of our progress and goals

Expo Users – no updates, take note of desires for the project

Driving Instructors – request feedback after version releases, take note of desires for project

Driving Students – request feedback after version releases, take note of desires for project

For Enjoyment Users – request feedback after version releases, take note of desires for project

Preliminary Context

Assumptions

The game will run on Unreal Engine

We are free to use any tools we wish as long as it isn’t a nearly complete version of our project

We have at least 6 months dedicated to coding the project

The workload is split amongst three people

The game will be single player and doesn’t need internet access for any essential features

The game is for PC at a minimum and further ports may be stretch goals

The game is first person for realism

The game wants all non-player characters to avoid collisions at any cost

Constraints

We are not to use paid tools not provided by OSU

The game is to run on an average PC

We have 6 months for the project

We have 3 people working on the project

Our group members each have at least 3 years of college experience

Dependencies

We need our workplace and tools setup on each group member’s machine before we can begin development

We need a functional prototype before we can implement advanced features

We need our MVP complete before we can work towards our stretch goals

Market Assessment and Competition Analysis

Forza: The game looks very realistic and the driving controls feel realistic, however the game is also very forgiving with mistakes, has no new modern vehicle features, focuses on racing rather than real life driving practice and it makes itself feels like a videogame.

BeamNG.drive: The game does well to focus on driving in the real world and abiding by traffic laws. It also does well with having realistic visuals, driving controls, and collision physics. However, the game can exaggerate its collisions and it fails to demonstrate the ADAS features that new modern vehicles have.

iRacing: The game looks and feels very realistic, the driving controls feel realistic, the mistakes are unforgiving. However, the game has no new modern vehicle features, focuses on racing rather than real life driving practice, and there is a subscription based payment to play the game.

City Skylines: A great example of vehicle and traffic AI. However, this game is a city builder and doesn’t do well with player controlled vehicles or much else from a drivers point of view.

Mario Kart: The game does well to create an enjoyable experience. However, the driving controls are very unrealistic, mistakes are horribly unforgiving, it makes itself feel very much like a video game, and it fails to demonstrate any of today’s ADAS features realistically.

Grand Theft Auto: Provides a free roam driving experience with realistically stupid AI drivers. The driving physics is floaty and geared more towards fun than simulation.

Many game engines have quality physics systems and other tools that have no reason not to be used for our project.

Target Demographics (User Persona)

Archibald and Barthalamult are first year OSU students checking out the engineering expo. They are wanting to find a cool project to have fun with.

Chris and Debbie are employers looking to hire game developers at the OSU engineering expo.

In addition to the above examples, we have potential categories we could group users into:

Enjoyment vs Education

Racing vs Law Abiding

Casual vs Competitive

Platform (PC)

Requirements

User Stories and Features (Functional Requirements)


User Story Feature Priority GitHub Dependencies Issue


As a driving student, I want TBD Must Have TBD N/A to learn to drive at home, so
that I can continue to learn
even when I’m not in a car.

As a driving student, I want TBD Should Have TBD N/A to have fun while learning to
drive, so that I stay
motivated with my learning.

As a driving student, I want TBD Should Have TBD N/A to practice driving cars
before I get one, so that I
can know what kind of car I
should get and if I should get
one.

As a car buyer, I want to TBD Should Have TBD N/A practice driving a variety of
cars, so that I know what
kinds of vehicles I prefer.

As a driving instructor, I TBD Must Have TBD N/A want to give my students an
opportunity to learn with no
risks, so that they can stay
safe when they learn to drive.

As a driving instructor I want TBD Could Have TBD N/A to give my students good
un-proctored study material,
so that I don’t have to spend
as much time teaching.

As a new gamer, I want to see TBD Must Have TBD N/A what driving simulator games
are all about, so that I can
know if I like them or not.

As a gamer, I want to have a TBD Should Have TBD N/A realistic driving experience
in a game, so that I can have
fun and immerse myself.

As a gamer, I want to see how TBD Could Have TBD N/A reckless I can drive without
getting in an accident, so
that I can vent my reckless
driving intrusive thoughts.

As a gamer, I want to have a TBD Could Have TBD N/A change of pace and drive
leisurely, so that I can have
a low stress driving
experience in my games.

As an experienced gamer, I TBD Could Have TBD N/A want to earn all of the
achievements in a realistic
driving simulator, so that my
friends all think I’m cool.

As a student at the expo, I TBD Should Have TBD N/A want to find a project that
peaks my interest, so that I
can become inspired in my
education goals.

As an employer at the expo, I TBD Should Have TBD N/A want to see an impressive
representation of a student’s
skills, so that I’m confident
in their ability as an
employee.

As a judge for the game design TBD Will Have TBD N/A competition, I want to find a
realistic driving simulator
with ADAS, so that I can have
a winner for the competition.

Non-Functional Requirements

The quicker the response time the better, but it must feel fluid/be playable

The game should be stable with minimal bugs and no crashes

The game should have minimal frame drops

The game should run spectacularly acceptably on an average grade of PC

Data Requirements

Game\

  • Player player\

  • NonPlayers nonplayers[]\

  • Map currentmap\

  • Map maps[]\

  • Vehicle currentvehicle\

  • Vehicles vehicles[]\

  • Achievement achievements[]

Player\

  • string name\

  • float playtime (Any other statistics to record)\

  • int brightness\

  • float sensitivity (Any other settings to include)

Non-player\

  • string name\

  • Vehicle vehicle

Map (consist of obj files with physics and interactions for each kind of object)\

  • objects: roads (bridges, tunnels, etc.), signs (stop, yield, etc.), traffic lights, buildings, nature

Vehicle\

  • objects: parts of the vehicles\

  • string name\

  • int currentspeed\

  • int topspeed (Any other vehicle behavior variables)\

  • bool functional

Integration Requirements

The game will likely be fully developed using Unreal Engine 5

User Interaction and Design

Startup: Opening the game brings the user to a menu screen that gives the user 5 options from there: Play, Select Map, Select Vehicle, Achievements, and Settings. Each brings the user to the corresponding menu.

Play: Brings the user to a screen showing their selected vehicle in first person view on the selected map ready to be controlled with player input. The world around them will change close to how it does in the real world. Pressing escape brings the player to the Pause Menu and freezes all interactions on the map (Play may also bring users to a game mode screen that could change how the game plays before they are brought to the core of the game).

Pause Menu: Brings the user to a pause menu giving them 6 options: Resume, Save, Load, Restart, Settings, Return to Menu. Resume will bring the user back to Play. Save will save the current game environment. Load will bring the user back to their most recent save (or to select a save). Restart will reset the entire map from the beginning of their session. Settings brings the user to Settings. Return to Menu returns the user to the Startup screen.

Select Map: Brings the user to a list of all the maps (or locations) they have unlocked and all of their locked maps. Each locked map will tell the user the achievement they need to complete in order to unlock it. When viewing a map that the user has unlocked, they can select it which will bring them back to the menu with that map selected.

Select Vehicle: Brings the user to a list of all the vehicles they have unlocked and all of their locked vehicles. Each locked vehicle will tell the user the achievement they need to complete in order to unlock it. When viewing a vehicle that the user has unlocked, they can select it which will bring them back to the menu with that vehicle selected.

Achievements: Brings the user to a list of all the different achievements the user can try to complete. Each achievement will display its name, requirements, and what it unlocks. Exiting brings the user back to the menu.

Settings: Brings the user to a screen displaying all of the alterable settings in the game as well as a save button and a cancel button. Pressing save will change the users’ settings to reflect what they set them to and send where they came from. Pressing cancel will send them to where they came from without saving their changes.

(Mockup sketches after group discussion)

{width=”6.83451990376203in” height=”4.249617235345582in”}{width=”3.029061679790026in” height=”2.1249956255468065in”}

{width=”5.0in” height=”2.447952755905512in”}

Milestones and Timeline

1. Create Workspace

2. Learn UE5

3. Create a rough prototype – requires 1 and 2

a. Basic graphics

b. Basic map – requires a

c. Basic vehicle behavior

d. Basic traffic system

e. Basic controls – requires b and c

f. Basic non-player AI – requires b, c and d

4. Update vehicle behavior – requires 3

5. Update player control – requires 4

6. Develop non-player vehicle AI – requires 4

7. Complete a map layout – requires 3

8. Update map graphics – requires 7

9. Implement full traffic system – requires 7

10. Update vehicle graphics – requires 3

11. Update physics – requires 3

12. Create Menu/Settings/Pause Screens

Goals and Success Metrics


Goal Metric Baseline Target Tracking Method


Increase user Decrease in TBD TBD Plausible performance collisions over Analytics time

Increase player Average active TBD TBD Plausible base players Analytics

Decrease bug Number of TBD TBD Player occurrences reported Reports occurrences

Product-market How would you TBD TBD Survey fit feel if you
couldn’t play the
game?

Open Questions

Q: Will we port the game to other consoles/controller schemes?

Q: What will each of our group members be focusing on?

Q: Are we planning to take this project beyond the class?

Out of Scope

No non-player humans involved in traffic systems

No custom advanced water physics or lighting

No focus put on racing

No multiplayer or cross-save