The game was developed using the free version of Unity. .... In Unity we use C# as our primary programming language, and
Universitetet i Agder DAT215 - IKT-Prosjekt
Project Report Bare Escape Nothing but butt
Kristoffer Johansen Simen Christoffer Andersen Martin Nordvik Abrahamsen Ole Martin Kaasa
Teacher: Christian Simonsen
Table of contents: 1 Project organization ................................................................................................................. 3 1.1 Members ........................................................................................................................... 3 1.2 About the members ............................................................................................................ 3 1.3 Roles ................................................................................................................................. 3 1.4 Tools .............................................................................................................................. 3 2 Project goal and limitations ...................................................................................................... 5 2.1 Limitations ........................................................................................................................ 5 2.2 Project goals ...................................................................................................................... 5 3 Implemented features .............................................................................................................. 6 3.1 Basic movement for the player............................................................................................ 6 3.2 Animated characters (Player and enemies) ......................................................................... 6 3.3 AI and enemies .................................................................................................................. 6 3.4 Vision cones....................................................................................................................... 6 3.5 Visual detection icons/ detection level from the enemies. .................................................... 7 4 Development and challenges..................................................................................................... 8 4.1 Development ..................................................................................................................... 8 4.2 Challenges ......................................................................................................................... 8 5 Summary of the project period .................................................................................................. 9
Abstract Bare Escape is a game about a student that has been deprived of his clothes while he is at school, and has to sneak out before he is caught. The game is a 2D stealth game where one has to get past professors, teachers and other students so that you can escape with your virtual dignity intact.
1 Project organization 1.1 Members The group consists of Kristoffer Johansen, Martin Nordvik Abrahamsen, Ole Martin Kaasa and Simen Christoffer Andersen.
1.2 About the members All of the members are studying computer science at UiA Grimstad. Over the three years we have been studying we’ve worked on several different assignments together, and we feel that we have good synergy and communication between each other. We are good at discussing our problems and finding mutual solutions.
1.3 Roles We chose to split the group in two where one part focuses mainly on programming and the other group focuses on reports and graphics.
Programmers: ● Kristoffer Johansen - Git master ● Simen Chr. Andersen - Project leader
Designers and report: ● Martin Nordvik Abrahamsen - Secretary ● Ole Martin Kaasa - Design leader
1.4 Tools ● Stash/git We have used Git as our version control system, it allows us to work with different parts of the project at the same time.
● GitExtensions GitExtensions gives us a graphical interface connect to our Git server, it makes it easier to get a overview on the last changes from other team members.
● Unity The game was developed using the free version of Unity. Unity is a visual game engine which makes it easier to develop games without having to work with inputs and game loops. ● Paint/Adobe Photoshop/GIMP We decided to make the different objects in Paint at first, and furthermore develop them in Photoshop/Gimp. At first we tried to draw the characters in Photoshop and Gimp, but then decided that it would be easier to draw the base in Paint, and then modify how we wanted it in Photoshop/Gimp.
2 Project goal and limitations 2.1 Limitations Seeing how this project goes over a limited period of time we decided to make a few limitations. First, the game will only be a prototype, and not a complete game. This will most likely be reflected in both the games graphics and features. We therefore want to make it possible to add features easily, if we decide to further develop the game after the project ends. We decided to make our own spritesheets, but we also decided not to make movement of the characters overly fluent. We will only have a few frames for each cardinal direction. This is because the characters will not be shown “up close”, which reduces the amount of frames needed for each animation. Instead of creating tile-sets so we could randomize the levels each time, we instead chose to go for set maps. Seeing how we have implemented high scores based on the time you take to finish a map, it wouldn’t make sense creating random maps every time.
2.2 Project goals We set a few goals we wanted to achieve for the game when we started the project. We’ve accomplished most of these, except for the highscore which might be implemented if we have enough time. ● Basic movement for the player. ● Animated characters (Player and enemies). ● Enemies with artificial intelligence ○ Patrol back and forth between predefined waypoints. ○ Hear and see the player, and move accordingly. ● “Vision cones” for visualizing were the enemies are looking. ● Visual detection icons/detection level for the enemies. ● Highscore
3 Implemented features 3.1 Basic movement for the player We have used simple translation to move all the characters on the map. We simply change the character’s X og Y coordinates instead of using physics (Unity feature). We started out using physics to add forces to control the characters position on the map. When we used physics to move the player we experienced some bugs where the user would simply glide all over the place, we then decided to use translation to move the player instead.
3.2 Animated characters (Player and enemies) In order to animate our characters we decided to use sprites. All the sprites for each character were put in their own sprite sheet, so we could easier keep control of all the movement frames. We didn’t know exactly how many frames we needed for basic movement, so we had to just make a few and then see how it worked out. We ended up using 5-6 frames for movement in each cardinal direction, so that you can still see their movement quite clearly, but it wouldn’t take so much time making them that it would feel like an unnecessary amount of time.
3.3 AI and enemies We wanted to implement enemies that can detect the player when the player is within a predefined field of view. When the player is at a certain distance and angle, he will “alert” the enemy and the enemy will move to the player last “known” position. (Where he was seen last.) The enemies will also react to sound, being able to hear within a certain distance. If the player is too loud, the enemy will start moving towards the sound. If the player gets detected by the AI the game ends and the player is presented a “Game Over” menu, with the option to reset the level.
3.4 Vision cones In order to make it easier for the player to see how far and in what direction the enemy is looking we have implemented three basic vision cones. The vision cones is basically three different gradients in green, yellow and red. The vision cone is green whenever the player is out of sight, when the enemy gets aware of the players position (almost detected) the vision cone will change color to yellow. If the player is detected the vision cone will be red and the game is over.
3.5 Visual detection icons/ detection level from the enemies. To make it easier for the player know whether or not he is detected we will implement a “gauge” that fills up when the player gets detected.
4 Development and challenges 4.1 Development We chose to use Unity as our development framework. We decided to use this because we figured it would be easier to start with the project, and we would have more time on creating a good game, instead of using a lot of time building a game engine from scratch.. In Unity we use C# as our primary programming language, and we use it to move characters, AI and play music. We also wanted to try Unity and try to learn how to use Unity to create a game. Since the group consists of 4 computer science students, we have focused on building a good AI with realistic features like vision and sound perception.
4.2 Challenges When this project began, none of us had much practical experience using Unity to develop games. Although familiar with using C# to write game logic, using the Unity framework took a great deal of time and practice to get the hang of. There is a lot of documentation readily available for Unity, but finding out which interfaces to use, or how the visuals are represented in units, ended up being a process of trial and error.
5 Summary of the project period Throughout the project period we feel like we’ve learned a lot about creating a game with the focus on design, instead of having to set up our own game engine, using state machines and resource loaders. We also feel that we’ve accomplished the different attributes that the course has taught us that a game needs. The game is integrated because you are playing a student at a school. Sneaking around gives meaning because you do not want to get caught running around naked. The direction you choose to take will affect what persons you might encounter. In addition, you can choose to run, which will affect the amount of sound you make. In hindsight, we probably wouldn’t have chosen Unity as our framework. As a team, we feel that Unity is too restrictive, and is bloated in terms of utilities and save files. Additionally, if we hadn’t used a visual game engine like Unity, we could have had more practice writing our own game loops.