SlideShare uma empresa Scribd logo
1 de 62
Beet 3D
A WORK-STUDY COMPUTER GAME
A PROJECT WORK SUBMITTED TO THE DEPARTMENT OF
COMPUTER SCIENCE AND INFORMATION TECHNOLOGY
BABCOCK UNIVERSITY
ILISHAN – REMO
OGUN STATE
NIGERIA
IN PARTIAL FULFILMENT OF THE REQUIREMENTS FOR THE
AWARD OF BACHELOR OF SCIENCE DEGREE IN COMPUTER
SCIENCE (INFORMATION SYSTEM)
BY:
BULURO, OLUWATOBI ENITAN
MATRIC NO: 12/3718
APRIL 2015
this page was intentionally left blank
this page was intentionally left blank
DEDICATION
This project is dedicated to God Almighty and Babcock University Ilishan-Remo, Ogun Nigeria.
ACKNOWLEDGEMENT
I will like to thank God almighty for empowering me with wisdom, knowledge and
understanding and for sparing our lives till the completion of this project and beyond. We give
him praise and adoration.
I also want to appreciate my parents for their funding and support through the project
development phases. I also like to appreciate my project supervisor for his constant support,
tutorials and guidance towards the completion of my project and also the Unity 3D team for the
constant assistance with the use of their software.
ABSTRACT
A number of gaming software being developed do not consider the educational aspect of the gamer.
Their objectives are either to develop better versions of their games using high-end graphic
software or meet their own self-administered objective.
The issue of work-study ignorance in Babcock University has increased through the years.
Students now discourage attending any work-study activity due to fowl stories passed down
every year to new students. Students also get discouraged because they don’t fully understand
the idea behind work-study and community service.
This project bridges the gap between students and work-study program involvement by
developing a virtual environment which will teach students about working with their hands and
participation in a work-study program in Babcock University.
CONTENTS Page
Declaration..……..…………………………………………………………………………………i
Certification..……………………………………………………………………………………...ii
Dedication………………………………………………………………………………………...iii
Acknowledgement………………………………………………………………………………..iv
Abstract……………………………………………………………………………………………v
CHAPTER ONE: PROJECT INTRODUCTION
1.1 Introduction………………………………………………………………….…….1
1.2 Problem statement…………………………………………………………………2
1.3 Aim………………………………………………………………………………..3
1.4 General objectives…………………………………………………………………3
1.5 Methodology………………………………….…………………………………...3
1.6 Scope of the project…………………………………………………………….…4
1.7 Outcome of this project……………………………………………………………4
1.9 Organization of work…………………………………….………………………..5
CHAPTER TWO: LITERATURE REVIEW
2.1 Introduction………………………………………………………………….…….6
2.2 Game development in Africa……………………………………………………...7
2.3 2D – 3D generation………………………………………………………………..8
2.3.1 Side-scrolling games………..……………………………………………..9
2.3.1 Top-down perspective games……………………………………………..9
2.4 Roles……………………………………………………………………………..11
2.5 Education and Gaming in Nigeria…………….………………………………….12
2.6 Related works…………………………………………………………………….12
2.7 Tabular review of related works/articles…………………………………………14
2.8 Theoretical framework…………………………………………………………...15
CHAPTER THREE: METHODOLOGY AND SYSTEM DESIGN
3.1 Introduction………………………………………………………………….…...16
3.2 Software development process model…………………………………………...16
3.3 Design tools……………………………………………………………………...16
3.3.1 What is a game engine?……………………………………………….....17
3.3.2 Unity 3D game engine…..…………………………………………….....17
3.3.3 What is 3D Modelling?…………………………………………………..19
3.4 Modelling of the proposed system……………………………………………….20
3.5 The proposed system……...………………………….…………………………..21
3.6 User and system requirements…………….……………………………………..21
3.6.1 User requirements…………….……..,…………………………………..21
3.6.2 System requirements…………….…..,…………………………………..24
3.7 Hardware and software requirements……………………………………………25
3.7.1 Hardware requirements…………….……..,……………………………..25
3.7.2 Software requirements…………….……..,………………………….…..25
CHAPTER FOUR: SOFTWARE IMPLEMENTATION
4.1 Introduction………………………………………………………………….…..26
4.2 Game interface…………………………………………………….......................26
4.2.1 The character………………………………………..................................27
4.2.2 Main menu...………………………………………..................................28
4.2.3 Start game………………………………………......................................29
4.2.4 Back………………………………………...............................................33
4.2.5 Credits………………………………………............................................33
4.2.6 Quit………………………………………................................................33
4.3 Software testing………………………………………………………………….34
CHAPTER FIVE: SUMMARY, RECOMMENDATION AND CONCLUSION
5.1 Summary…..……………………………………………………………….…….35
5.2 Recommendations ………………………………….……………………………36
5.3 Conclusion……………………………………………………………………….36
References………………………………………………………………………………………..37
Appendix……………………………………………………………………………………….......i
LIST OF FIGURES
2.1 Awesomenaunts is a scrolling MOBA game…………………………….………..9
2.2 An example of a typical top-down, third-person view game, The Heist 2…..……9
2.3 First-person perspective as seen in STALKER: Shadow of Chernobly (2007)…...10
2.4 Call of Duty. An example of a 3rd person game…………………………………10
3.1 Player case diagram (Module 1)…………………………………………………10
3.2 Player case diagram (Module 2)…………………………………………………10
3.3 Player case diagram (Module 2A)………………………………………….……10
3.4 Player case diagram (Module 2B.………………………………………….……10
4.1 BeeT 3D configuration start page……….………………………………….........24
4.2 A student dressed in uniform for work-study……………………………………25
4.3 BeeT 3D configuration settings page…………………………………….………25
4.4 Main menu display……………………………………………………………….26
4.5 Sub main menu display………………………………………………………..…26
4.6 Main menu display………………….…………………………………………....27
4.7 Two students in work-study………………………..…………………….………29
4.8 The main gate of the school………………………..…………………….………29
4.9 A tuk-tuk (Keke) moving through the school…………………………………….29
4.10 Babcock Business School (BBS)…………………………………………………30
4.11 Babcock University teaching hospital (BUTH) ambulance………………………30
4.12 A plain view of the game environment…………………………………………...33
LIST OF TABLES
2.1 Examples of games and their release dates…………………………….………….7
2.2 Related works/articles…………………………………………………………....14
CHAPTER ONE
1.1 INTRODUCTION
Game playing is the design of artificial intelligence programs to be able to play more than one
game successfully. For many years, computers are programmed to play these games using
specially designed algorithms, which cannot be transferred to another context. For example, a
single player computer game program cannot play a multiplayer game. General game playing
was a project of the Stanford Logic Group of Stanford University, California which aims to
create a platform for general game playing.
There are other general game playing systems, which use their own languages for defining the
game rules. In 1992, Barney Pell developed the system Metagame. This system was able to play
a number of chess like games, given game rules definition in a special language.
In 1998, the commercial system, Zillions of Games was developed by Jeff Mallet and Mark
Lefler. The system used a LISP-like language to define the game rules. Zillions of games derived
the evaluation function automatically from the rules based on piece mobility, board structure and
game goals.
Simulation games began with Will Wright opening the Sim series in 1989 with SimCity, a city
building game. Certain games such as SimLife and SimEarth were subsequently created and are
capable of teaching players the basics of genetics and global ecosystem.
Simulation games aim to copy various activities form real life in form of a game for various
purposes such as training, analysis or prediction. Examples are business games, war games, role
playing games, war games or educational games. From three basic types of strategic, planning
and learning exercises: games, simulations and case studies, a number of hybrids may be
considered, including simulation games that are used as case studies.
1.2 PROBLEM STATEMENT
A lot of gaming software being developed do not consider the educational or moral aspect of the
gamer. Their objectives are either to develop better versions of their games using high-end graphic
software or meet their own self-administered objective(s).
Some simulation games that have also been developed also don’t consider the educational aspects
of the gamers. Since the development of games, the only widely sold game that portrays
developing countries like Nigeria, Iraq, etc. is Call of Duty – Advance Warfare.
Due to these challenges, my simulation game project adopts a developing country scenario
(Babcock University as case study) and impact educational concepts into the player of the game
through the use of student work study and the concept of Artificial Intelligence in gamification.
1.3 AIM
The aim of this project is to develop a game that will portray Babcock University as the case study
thus, allowing students or other players of the game to easily understand the concepts and
knowledge behind the development of the project. Thus, using an environment where players can
easily relate/interact which will make the game more interesting for the players.
1.4 GENERAL OBJECTIVES
1. To help the new and old students understand the concept of work study and its positive
effects on them by developing a virtual environment to simulate community service
scenarios.
2. To assist new students getting accustomed with Babcock University’s environment and
work study education.
3. To model the work-study program in 3D dimensional view. Thus, showing the students of
Technical Drawing courses and students of Computer Technology modelling techniques.
1.5 METHODOLOGY
Following the stated general objectives above, I will adopt a methodology in accordance with the
System Development Life Cycle (SDLC) to attain them:
 Methodology 1: To ascertain the viability of my project, I performed researches on Game
Development, understand the concept of simulation gaming and development, research on
educational games and study their methodologies to understand the concepts they used in
developing. Also under this phase I ascertained the cost of running the project and risk
management.
 Methodology 2: In this phase, I conducted series of interviews with stake holders (old/new
students of Babcock University and staff of the community service department) to find out
details needed for work-study, locations in school where students can perform the services
and also other requirements aimed towards Babcock University’s environment.
 Methodology 3: In this phase I used a software called Unity 3D for the construction of the
game’s environment in 3D dimensional view, MonoDevelop as an IIDE for scripting
(coding) and made use of modelling software like Maya 3ds Max and Maya Autodesk. I
also used system software like Paint and Pictures and an application software (Photoshop)
in editing images needed in the development of the 3D environment.
1.6 SCOPE OF THE PROJECT
The project emulates an environment (Babcock University) into virtual 3D and mimics an exact
replica of different structure and objects available in the school.
1.7 OUTCOME OF THIS PROJECT
A game called “BEET 3D” which will initially be developed for PC (Windows).
1.8 ORGANIZATION OF WORK
The game software will be made up of five chapters to be explained below:
Chapter One (Introduction)
Chapter Two (Literature Review): In this chapter, I discussed the brief summary of gaming and
simulations to understand its history and how it has evolved in the past years thus, showing me
how to better build my project.
Chapter Three (methodology and system design): In this chapter, I discussed the methodologies
used in the development of this game and also the design processes involved in the development.
Chapter Four (Implementation and Testing): In this chapter, I discussed the requirements,
specifications, implementation and testing of the software.
Chapter Five (Summary and Conclusions): In this chapter, I discussed my findings so far and
summarized the processes involved in the development of this project.
CHAPTER TWO
LITERATURE REVIEW
2.1 INTRODUCTION
Game development is the process of creating a game. The development may range from a single
developer to a large organization of developers. Commercial PC and console games are normally
developed by a publisher (e.g. EA sports, BT games, Capricon, etc.) and may take several years
to develop.
The development of the first video games in the 1950s needed mainframe computers which were
not available to the general public. With the introduction of the 1st generation of game consoles
in the 1970s, commercial game development started its wave of popularity, where game consoles
and home computers could be accessible by the public. Due to low costs and low capabilities of
computers, a lone programmer can develop a full game, but in a period of time depending on the
type of game to be developed. Computer Space was the first commercially sold video game. It
was a black-and-white game and the computers system was made of 74 series TTL chips (one of
the early chips found in early computer systems).
Due to the revolution of science in the 21st century, the price of a lone programmer creating a
game has risen to be quite expensive. But the development of mobile-based games have still
remained less expensive to no expense in some cases.
Console games and PC games are generally developed in phases. The pre-production phase,
where the developer(s) create prototype and write documents (e.g. a proposal to contain
concepts, gameplay, feature list, settings, audience, etc.) to be presented to sponsors, prototype to
be presented to a focus group of gamers, and other external bodies for the review of the
proposal/intended game. If the intended game is approved, the developer(s) may receive funding,
start advertisement, set a deadline date and then development of the game begins. In the
development of a major game, the developers range from different fields which include
programmers, artists, voice actors, designers, testers, sound effect, focus group, etc.
Mobile game development on the other hand is faster in its production. In most cases it takes less
than a year of production and mostly a lone developer in its development. Due to the small
market and investment needed for mobile game development, mobile game development is now
seen as an avenue for small businesses or individuals to enter the gaming industry.
Game development period ranges according to different factors which include genre of the game,
among other factors for game development. Some examples of games and their release dates are:
Game Development begins Date released
1. Spore 1999 2008
2. Prey 1997 2006
3. Duke Nuken Forever 1997 2011
4. Team Fortress 2 1998 2007
Table 2.1 - Examples of games and their release dates
2.2 Game development in Africa
Game development in Africa wasn’t a recognizable sector until recent times. The largest gaming
market in Africa is in South Africa. The market is overtaking the market in movies and music in
the country. In Nigeria, game development also started making wave when games like Call of
Duty, basketball games, FIFA football games among others started using our environments. The
use of our Nigerian environment in games inspires us to purchase those kind of games and also
produce games of ours.
Gaming companies like Gameplus Limited, Techline Communications, Simply Fun Limited,
Impedence Systems Company, Kuluya, among others, have been newly introduced companies
into the gaming sector. Kuluya for example focuses on developing games in which the
environment is Nigerian-based. The company also uses characters which are dark skinned to
make the games enjoyable from different perspective.
2.3 2D – 3D GENERATION
2D computer game graphics started in the 1950s which is based on vector graphics devices and is
the computer-based generation of digital images. 2D was mainly used in applications that were
originally developed upon traditional printing and drawing technologies, such as typography,
cartography, technical drawing, etc. Games utilizing parallel projection typically make use of
2D, allowing developers to create large, complex gameworlds efficiently and with relatively few
art assets. Examples of 2D driven games are:
2.3.1 Side-scrolling games
Fig 2.1 - Awesomenauts is a scrolling MOBA game.
2.3.2 Top-down perspective games
Fig 2.2 - An example of a typical top-down,
third-person view game, The Heist 2
With the introduction of 3D accelerated graphics, video games could go beyond the old
technology of 2D. in 3D games, real life scenarios and intended graphics are easily seen from
different perspectives. There has also been an introduction of backgrounds to 3D games due to
its flexibilities in movement and graphics.
There have also been different gaming graphical perspectives that come with 3D which include
1st person, 3rd person, Stereo graphics, among others.
1st person perspective example
Fig 2.3 - First-person perspective as seen in
STALKER: Shadow of Chernobly (2007).
3rd person perspective example
Fig 2.4 - Call of Duty. An example of a 3rd person game.
2.4 Roles
1. Producers: Internal producers working for the developers are known as internal
producers and manages the development team, staff etc. the producer may also be
referred to as project manager, project lead or director.
2. Publisher: Is responsible for the publishing of the develop game, also responsible for
advertising, marketing, and all the responsibilities a publisher in other sector is supposed
to have. They usually deal with finances of the project in some cases.
3. Designer: A designer is one who designs the gaming structure of the game, the
gameplay, rules, etc. the designer is in charge of the writing the story line of the game.
4. Artist: A game artist is one who creates game arts which his overseen by an art director.
The artist may be tasked with a 2D or 3D oriented work depending on the genre and other
factors of the game to be developed.
5. Development Team: The development team range from about 2 people to a team of 100.
The size of the team depends on the type of game to be developed. Like discussed above,
a mobile based game doesn’t need a very large development team (1 – 50), whereas, a PC
or console development team may rage higher from about 20 – 100 team members.
6. Programmers: A programmer is a software engineer who primarily develops video
games using game development tools like Unity 3d, 3D Max, etc. the coding aspect of the
game is handled by the programmer. Programming discipline roles include: physics, AI
(Artificial Intelligence), Gameplay, Sound programming, UI (User Interface), Scripting,
Game tools usage, etc.
7. Tester: Testers are in charge of making sure the quality expected from the game is met.
They test the game periodically during the development period to make sure that all
necessary expected features are met.
8. Focus Group: The focus group can be of about 3 – higher number of people. The can
function as testers but their main aim is to brain storm and figure out extra features to be
added to the game to be developed.
9. Maintenance group: After the release of a game, the maintenance phase for the game
begins. Series of updates become available in order to fix bugs on those released games.
2.5 Education and Gaming in Nigeria
Many universities in Nigeria don’t or never offer classes specifically focused on
game development. It is not yet seen as a relevance to schools in Nigeria to
include gaming as an aspect of Computer studies.
2.6 RelatedWorks (This is a review of related simulation gaming
software)
1. The Sims is a life simulation video game series developed by EA Maxis and published
by Electronic Ar. In The Sims, the players create virtual people called “Sims” and places
them in houses and help direct their moods and satisfy their desires.
The Sims 3 Minimum System Requirement
1. CPU (INTEL): Pentium 4 2.0GHz
2. CPU (AMD): Athlon XP
3. GPU (NVidia): GeForce 2 MX 400 64MB
4. GPU (AMD): Radeon 8500 Series 64MB
5. RAM: 1 GB
6. Operating System: Window 7
7. Direct X: DX 8
8. Hard Disk Drive Space: 4 GB
Even though The Sims was one of the first widely sold simulation games to be developed, it
never depicted the real life scenario of a developing country (e.g. Nigeria). The Sims not only
avoided the portraying of developing countries but got a lot of critics which based their
opinions that The Sims doesn’t teach young good morals. It was also developed to be played
on Microsoft Windows 7. Thus, compatibility issues occur.
2. Second Life is an online virtual world, developed by Linden Lab. Second life users create
virtual representations of themselves called avatars and are able to interact with other
avatars, places and objects. They can explore the world (known as the grid), meet other
residents, socialize, participate in individual and group activities, build, create, shop and
trade virtual property and services with one another.
Second Life Minimum System Requirement
1. GPU (NVidia): GeForce 2 MX 400 64MB
2. GPU (AMD): Radeon 8500 Series 64MB
3. RAM: 2 GB
4. Direct X: DX 8
5. (Note: the game is played online so no need for interior CPU requirements and operating
system requirements).
Second Life was also one of the first simulation games too be online based thus, meeting more
people from different geographical regions. But, its limit to only been able to be played online
makes it not easily accessible in developing countries due to the low quality internet capacity.
2.7 Tabular Review of RelatedWorks/Articles.
TITLE AUTHOR/PUBLISHER CONTRIBUTION GAP
1. The Sims Electronic Art Maxis First widely sold
Simulation game.
- Ignorance of
developing
countries.
- Compatibility
issues.
2. Second Life Linden Lab First online based
simulation game.
-ignorance of
developing
countries.
Table 2.2 – Related works/articles
With proper study of these works and gaps I’ve worked out tools and techniques to be used in
this project.
The programming tool to be used will be monoDevelop, game design tool will be Unity 3d, and
modelling tool would be Blender and Maya. This project will also be developed to match our
current location (Babcock University).
2.8 TheoreticalFramework
Fig 2.5 – Prefix model for Theoretical framework (Okoro R. et al, 2013)
In the development of this project, I followed the above theoretical framework in arriving at
certain findings and conclusions.
CHAPTER THREE
METHODOLOGY AND SYSTEM DESIGN
3.1 INTRODUCTION
This chapter reviews the different components of my game software by analysis of each system
and software component. There will be analysis of the software game features and properties.
3.2 SOFTWARE DEVELOPMENT PROCESS MODEL
The software development process model to be used will be the waterfall model because the
requirements and specifications are well-defined.
3.3 DESIGN TOOLS
To achieve my game software, I will make use of the following:
 A game engine (used to design the game environment, a general platform for which the
game will be worked upon).
 Two 3D modelling software (which will be used to design, construct and model objects
like humans, buildings and other rigid objects).
3.3.1 What is a Game Engine?
A game engine is a software framework designed for the creation and development of video
games. The core functionality typically provided by a game engine includes a rendering engine,
physics engine or collision detection, scripting, animation and artificial intelligence.
Game engines provide platform abstraction, allowing the same game to run on various platforms
including game consoles and mobile devices.
Examples of game engines:
Blender, Delta3D, Oxygine, Panda3D, Retribution Engine, Unreal Engine 4, Wire3D, 3D Rad,
Dim3, Unity 3D, ORX, etc.
For the development of this game software, I used Unity 3D game engine.
3.3.2 Unity 3D Game Engine
Unity is a cross-platform game creation software which consist of a game engine, Integrated
Development Environment (IDE) and monoDevelop (for scripting) developed by Unity
Technologies. It is used to develop video games for websites, desktop platforms, consoles and
mobile devices. First announced only for the Mac OS and since been extended to target more
than fifteen platforms.It is now the default software development kit (SDK) for the Nintendo
Wii.
Features of Unity 3D game engine
1. Rendering
The graphics engine targets Direct3D on Windows and Xbox 360, OpenGL on Mac,
Windows and Linux, OpenGL ES on android and iOS and other proprietary API’s on video
game consoles.
Unity supports assets and file formats from 3ds Max, Maya, Blender, Cinema 4D,
Cheetah3D, Adobe Photoshop, Adobe Fireworks and Algorithmic substance (these are
modelling software). These assets can be added to the game project, and managed through
Unity's graphical user interface.
2. Scripting
Unity game engine’s scripting is built on Mono (the open-source implementation of the
.NET Framework). I used UnityScript (a custom language; part of JavaScript), c# and Boo
(which has a python-inspired syntax). MonoDevelop is a build in IDE for the
implementation and coding in Unity.
3. Platform
Unity 3D supports multiple platforms. In the development of a game, unity can compile
the output of games to web browsers, mobile devices, desktops and consoles. Unity also
allows specification of texture compression and resolution settings for each platform the
game supports.
Currently supported platforms for Unity 3D include Windows 8, Windows Phone 8,
BlackBerry 10, Windows, Mac, Linux, Android, iOS, Unity Web Player, Adobe Flash,
PlayStation 3, PlayStation 4, Xbox 360, Xbox One and some other PlayStation platforms,
etc.
4. Asset store
Unity's Asset Store is home to a growing library of free and commercial assets created
both by Unity Technologies and also members of the community. A wide variety of assets
is available, covering everything from textures, models and animations to whole project
examples, tutorials and Editor Extensions. The assets are accessed from a simple interface
built into the Unity Editor and are downloaded and imported directly into your project.
5. Physics/Rigidbodies
Unity has NVIDIA PhysX physics engine built-in. This allows for unique emergent
behavior and has many useful features like real-time cloth simulation on arbitrary and
skinned meshes, thick ray casts, and collision layers.
Rigidbodies are physically simulated objects. You use Rigidbodies for things that the
player can push around, for example crates or loose objects, or you can move Rigidbodies
around directly by adding forces to it by scripting.
3.3.3 What is 3D modelling?
3D modelling is the process of developing a mathematical representation of any three-
dimensional surface of an object (either inanimate or living) via specialized software. The
product/result is called 3D model. Wikipedia, (2014).
For the development of the game software, I used Autodesk Maya and Autodesk 3ds Max.
a) Autodesk Maya
Autodesk Maya (also shortened as Maya) is a 3D graphics computer software that runs on
Windows, OS X and Linux. It is used to create interactive 3D applications, including video
games, animation films, TV series or visual effects.
b) Autodesk 3ds Max
Autodesk 3ds Max is a professional 3D computer graphics program for making 3D animations,
models, games and images. It has modelling capabilities, a flexible plugin architecture and can
be used on the Microsoft Windows platform. It is also used by game developers and for movie
effects and visualization.
3.4 MODELLING OF THE PROPOSEDSYSTEM
1. Terrain construction: A terrain is the ground in which all objects in Unity stand or are
placed. I created it using the “Create terrain” tool in Unity’s tool bar.
2. Weather and cloud: The cloud is formed by a weather simulation plugin available in Unity
game engine.
3. Buildings and structures: The buildings and structures in the game are constructed in
Autodesk Maya and 3ds Max and imported to Unity engine as rigid bodies.
4. Road path: the road path in our game was constructed using a “create road” asset from the
Unity Asset Store and plain from Unity’s Engine.
5. The game software will be a centered on Babcock University, using the university as her
case study, adopting structures in the university to be represented in the game.
3.5 THE PROPOSED SYSTEM
 Game interface
o Game menu
 Start game
Clicking the “Start game” icon sends a command to the system which
begins the game.
 About
Clicking the “About” icon displays a view of the developers of the game
software.
 Quit game
Clicking the “Quit game” icon sends a command to the system which
terminates the software.
3.6 USER AND SYSTEM REQUIREMENTS
3.6.1 USER REQUIREMENTS
STUDENT (PLAYER)
a. Student shall be able to start the game.
b. Student shall be able to create a new profile or load an old profile.
c. Student shall be able to play free roam.
d. Student shall be able to navigate to places of desire on the terrain.
e. Student shall be able to pause the game.
f. Student shall be able to quit the game.
Fig 3.1 – Player case diagram (Module 1)
Fig 3.2 – Player case diagram (Module 2)
Fig 3.3 – Player case diagram (Module 2A)
Fig 3.4 – Player case diagram (Module 2B)
3.6.2 SYSTEM REQUIREMENTS
a) FUNCTIONALREQUIREMENTS
When the user clicks start game on the main menu, the game loads up programmed levels form
the scripting and displays the interface to the screen for use by the player.
The player uses inputs on the keyboard to move and interact with objects in the game. The player
hits keys like Up Arrow, Left Arrow, Right Arrow and Down Arrow for movement of objects
(character, objects, etc.), Space Bar for Jumping, Left Shift key for sprinting or moving faster,
Escape (Esc.) For Menu option and the Track Pad for looking and direction. When these keys are
clicked, the system takes in the command, compares the input to the scripting I coded during
development and performs the desired action on display.
When the user clicks the Escape (Esc) button, the system also takes in the command, compares
with the right result for that input in the scripting and displays the Pause Menu Screen where the
user can also select to continue playing the game, read the About for the game and Quit the
game.
b) NONFUNCTIONALREQUIREMENTS
a. Game will load within seconds.
 Game should work fast without any hangs or buffer.
 Game should enhance its 3D abilities on different systems.
 Game should be able to run without help, assistance or installation of third party
software.
 Game will not consume RAM space in a system.
 Game software will be able to adapt to newly developed systems, thus, extensibility of
the software.
 Game software will show Babcock University in 3D and also have a view of future
infrastructure for the university.
3.7 HARDWARE AND SOFTWARE REQUIREMENTS
3.7.1 Hardware Requirements
a. RAM: 1 GB or more
b. System type: 64-bit Operating system
c. Direct X: DX 8 or more
d. Hard Disk Drive Space: 4 GB (minimum)
e. Minimum processor speed: 1.50GHz
3.7.2 Software Requirements
a. Unity 3D
b. Autodesk Maya
c. Autodesk 3ds Max
d. Microsoft Windows Operating System: Windows XP, Windows 7, Windows 8 and
Windows 10.
CHAPTER FOUR
SOFTWARE IMPLEMENTATION
4.1 INTRODUCTION
Implementation is process of integrating a plan, software design, requirements and algorithm into
software applications. It is the first phase to the successful completion of a software application.
The implementation of product software is the final link in the deployment chain of software
production and all requirements are evaluated to ensure quality software development before
delivering it to the end-users.
4.2 GAME INTERFACE
On game startup, configuration settings which includes graphic resolution and controller setting
appears which enables users to choose their most preferred functional settings whereby resolution
and quality can be adjusted as well gaming controls.
Fig 4.1 - BeeT 3D configuration start page
4.2.1 THE CHARACTER
The work-study character in the game is portrayed to dress like a proper person in service.
Fig 4.2 - A student dressed in uniform for work-study
Fig 4.3 - BeeT 3D configuration settings page
4.2.2 MAIN MENU
Fig 4.4 - Main menu display
As the game is launched, the first page to be displayed will be a sub main menu
Fig 4.5 - Sub main menu display
Once the “Click to begin” button is clicked, the next page to be displayed would be the main menu
where various options can be selected;
Fig 4.6 - Main menu display
4.2.3 START GAME
When the “Start Game” button is selected, a scene (Level 1) is loaded displaying the character in
a tuk-tuk (Keke) at a start point (Babcock University’s main gate) where the first objective is to
navigate to the University’s stadium.
When the objective (locate the Stadium) is completed, another level is loaded where the player
will be assigned his hostel, courses and other requirements of a student. Other objective include to
locate the cafeteria, perform certain work study roles like sweep, clear an area, etc., to gain points.
The gained points can be used to buy books at the book shop, buy refreshments and food items.
After completion of objectives, the free roam option can be selected where the player has the
opportunity to roam the university and explore certain areas in the school.
On exit, the current game play level will be saved and can be restored on return of the player.
a) AUDIO PLAYBACK
During game play, certain audio sounds are played in order to fully reproduce locations in the
University. The audio files were added by java scripts available in the appendix.
b) IMAGES OF LOCATIONS IN THE GAME
Fig 4.7 - Two students in work-study
Fig 4.8 - The main gate of the school
Fig 4.9 - A tuk-tuk (Keke) moving through the school
Fig 4.10 - Babcock Business School (BBS)
Fig 4.11 – Babcock University teaching hospital (BUTH) ambulance
Fig 4.12 - A plain view of the game environment
4.2.4 BACK
The back button is takes the player back to the sub-menu where the player has the options of quit
or resume the game.
4.2.5 CREDITS
When the “Credits” button is pressed a looped video sequence is started to display the credits for
the game development.
4.2.6 QUIT
The “Quit” button closes the game and ends every system process associated with BeeT 3D.
4.3 SOFTWARE TESTING
Software testing is the execution of the software with actual test data with goals like verify that
all requirements are implemented correctly, identifies defects before software deployment and
help improve quality and reliability.
The various testing techniques were implemented:
- Platform Testing: In platform testing, the game was tested on other devices such as
android devices (tabs and smart phones).
- Extensibility Testing: The game software was developed on a Windows 7 and Windows
8 system, thus, an extensibility test was conducted where the software was installed and
played on lower operating systems like Windows XP and higher operating systems like
Windows 8.1 and they all yielded positive outcomes.
CHAPTER FIVE
SUMMARY, RECOMMENDATION AND CONCLUSION
5.1 SUMMARY
Application of BeeT 3D for the familiarity of Babcock University using knowledge from artificial
intelligence, database management and JavaScript, Boo and C # will assist students or parents in easily
understanding the game environment (Babcock University).
The firstchapterof this projectintroducedthe aimof thisproject,problemswithcurrentlyusedengines
or game dimensioning and ways to tackle them.
The second chapter discussed research works done by other game developers and the problems
faced or discovered with the way I suggested to avoid them.
The third chapter discussed the system analysis and design phases to be followed and also the tools
to be used during software design.
The forth chapter explained the implementation of the system and a review of the performance of the
system which were further portrayed with diagrams from the game.
The fifth chaptersummarizesthe projectwithrecommendations for future versions or enhancements.
5.2 RECOMMENDATIONS
BeeT 3D game is extensible, thus, chances of future upgrades or modifications are possible.
Recommended future upgrades or modifications may include:
1. Availability of classroom lectures to fully simulate learning environment.
2. Transformation of the game’s objectives into free roam and objective oriented gameplay.
3. Game to be used in explanation of the concept of modelling & simulation, artificial
intelligence and Java Scripting language case study.
4. Full simulation of Babcock University to portray students, lecturers and other features
present or developed over time to aid easier understanding of the environment.
5.3 CONCLUSION
In conclusion, this project will serve the purpose for which it is being developed. It has been found
that players of car-games experience a thrill and fulfillment which they can never experience in
real life. Car controlled movement through Babcock University with the sole aim of reaching a
particular destination increases the player’s determination and concentration. Unlike in the real
world, you don't have to worry of accidents or getting hurt.
REFERENCES
Ken Jones, (1995). Simulations: “A handbook for teachers and trainers”.
Danny Saunders, Jacqui Severn: “Simulation and Games for Strategy and Policy
Planning”.
Michael Genesereth and Nathaniel Love. General Game Playing: Overview of the AAAI
Competition.
List of Gaming companies in Nigeria. Available at: www.companylist.org/companiesnigeria
(Retrieved 2014-10-07).
2D computer graphics. Available at: www.wikipedia.com/2dcomputer_graphics (Retrieved
2014-10-07).
First-person perspective. Available at: www.wikipedia.com/firstperson_perspecctive
(Retrieved 2014-10-07).
Virpi Ruohamaki. A simulation game for the development of administrative work
processes. (Retrieved 2014-10-07).
Danny Sauders: Introducing simulations and games for business. (Retrieved 2014-10-
06).
Thomas Grip. 4-Layers, A Narrative Design Approach. (Retrieved 2014-09-20).
David Jaques: Games, simulations and case studies – a review. (Retrieved 2014-10-07).
Jussi Holopainen and Staffan Björk. Game Design Patterns. (Retrieved 2014-10-07).
Dejaime Antonio de Oliveira Neto. Intelligent 2D Collision and Pixel Perfection
Precision. (Retrieved 2014-10-07).
Marko Nemberg. Beginning Guide to User Testing With Child. Available at:
www.gamedev.net/beginningguide. (Retrieved 2014-10-07).
Angel Cagle. The Pros and Cons of Going to College for Game Development/Design.
Available at: www.gamedev.net/prosandcons_college. (Retrieved 2014-10-07).
Ken Jones, (1995). Simulations: A handbook for teachers and trainers.
Danny Saunders, Jacqui Severn: Simulation and Games for Strategy and Policy
Planning.
Michael Genesereth and Nathaniel Love (1996): “Games and Simulations to Enhance
Quality Learning”.
APPENDIX
MAIN MENU JavaScript (.js)
#pragma strict
function OnGUI()
{
if (GUI.Button(Rect(210,200,300,40),"Start Game"))
{
Application.LoadLevel("plan");
}
if (GUI.Button(Rect(210,250,300,40),"Back"))
{
Application.LoadLevel("MainMenu");
}
if (GUI.Button(Rect(210,300,300,40),"Credits"))
{
Application.LoadLevel("Credits");
}
if (GUI.Button(Rect(210,350,300,40),"Quit"))
{
Application.Quit();
}
}
SUB MENU – JavaScript (.js)
#pragma strict
function OnGUI()
{
GUI.Box(Rect(520,0,300,40),"Welcome");
if (GUI.Button(Rect(520,500,300,40),"Click to begin"))
{
Application.LoadLevel("SubMenu");
}
}
FPS Input controller movement – JavaScript (.js)
private var motor : CharacterMotor;
// Use this for initialization
function Awake () {
motor = GetComponent(CharacterMotor);
}
// Update is called once per frame
function Update () {
// Get the input vectorfrom kayboard or analog stick
var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
if (directionVector != Vector3.zero) {
// Get the length of the directon vectorand then normalize it
// Dividing by the length is cheaper than normalizing when we already have the length anyway
var directionLength = directionVector.magnitude;
directionVector = directionVector / directionLength;
// Make sure the length is no bigger than 1
directionLength = Mathf.Min(1, directionLength);
// Make the input vector more sensitive towards the extremes and less sensitive in the middle
// This makes it easier to control slow speeds when using analog sticks
directionLength = directionLength * directionLength;
// Multiply the normalized direction vector by the modified length
directionVector = directionVector * directionLength;
}
// Apply the direction to the CharacterMotor
motor.inputMoveDirection = transform.rotation * directionVector;
motor.inputJump = Input.GetButton("Jump");
}
// Require a character controller to be attached to the same game object
@script RequireComponent (CharacterMotor)
@script AddComponentMenu ("Character/FPS Input Controller")
Mouse Look – C# (.cs)
using UnityEngine;
using System.Collections;
public class MouseLook : MonoBehaviour {
public enum RotationAxes { MouseXAndY= 0, MouseX= 1, MouseY= 2 }
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;
void Update ()
{
if (axes == RotationAxes.MouseXAndY)
{
float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
}
else if (axes == RotationAxes.MouseX)
{
transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
}
else
{
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
}
}
void Start ()
{
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
}
CONTROLLER MOTOR JAVA SCRIPT
#pragma strict
#pragma implicit
#pragma downcast
// Does this script currently respond to input?
var canControl : boolean = true;
var useFixedUpdate : boolean = true;
// For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspector
view.
// Very handy for organization!
// The current global direction we want the character to move in.
@System.NonSerialized
var inputMoveDirection : Vector3 = Vector3.zero;
// Is the jump button held down? We use this interface instead of checking
// for the jump button directly so this script can also be used by AIs.
@System.NonSerialized
var inputJump : boolean = false;
class CharacterMotorMovement {
// The maximum horizontal speed when moving
var maxForwardSpeed : float = 100.0;
var maxSidewaysSpeed : float = 100.0;
var maxBackwardsSpeed : float = 100.0;
// Curve for multiplying speed based on slope (negative = downwards)
var slopeSpeedMultiplier : AnimationCurve = AnimationCurve(Keyframe(-90, 1), Keyframe(0, 1),
Keyframe(90, 0));
// How fast does the character change speeds? Higher is faster.
var maxGroundAcceleration : float = 30.0;
var maxAirAcceleration : float = 20.0;
// The gravity for the character
var gravity : float = 10.0;
var maxFallSpeed : float = 20.0;
// For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the
inspectorview.
// Very handy for organization!
// The last collision flags returned from controller.Move
@System.NonSerialized
var collisionFlags : CollisionFlags;
// We will keep track of the character's current velocity,
@System.NonSerialized
var velocity : Vector3;
// This keeps track of our current velocity while we're not grounded
@System.NonSerialized
var frameVelocity : Vector3 = Vector3.zero;
@System.NonSerialized
var hitPoint : Vector3 = Vector3.zero;
@System.NonSerialized
var lastHitPoint : Vector3 = Vector3(Mathf.Infinity, 0, 0);
}
var movement : CharacterMotorMovement = CharacterMotorMovement();
enum MovementTransferOnJump {
None, // The jump is not affected by velocity of floor at all.
InitTransfer, // Jump gets its initial velocity from the floor, then gradualy comes to a stop.
PermaTransfer, // Jump gets its initial velocity from the floor, and keeps that velocity until landing.
PermaLocked // Jump is relative to the movement of the last touched floor and will move togetherwith that
floor.
}
// We will contain all the jumping related variables in one helper class for clarity.
class CharacterMotorJumping {
// Can the character jump?
var enabled : boolean = true;
// How high do we jump when pressing jump and letting go immediately
var baseHeight : float = 1.0;
// We add extraHeight units (meters) on top when holding the button down longer while jumping
var extraHeight : float = 4.1;
// How much does the character jump out perpendicular to the surface on walkable surfaces?
// 0 means a fully vertical jump and 1 means fully perpendicular.
var perpAmount : float = 0.0;
// How much does the character jump out perpendicular to the surface on too steep surfaces?
// 0 means a fully vertical jump and 1 means fully perpendicular.
var steepPerpAmount : float = 0.5;
// For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the
inspectorview.
// Very handy for organization!
// Are we jumping? (Initiated with jump button and not grounded yet)
// To see if we are just in the air (initiated by jumping OR falling) see the grounded variable.
@System.NonSerialized
var jumping : boolean = false;
@System.NonSerialized
var holdingJumpButton : boolean = false;
// the time we jumped at (Used to determine for how long to apply extra jump power after jumping.)
@System.NonSerialized
var lastStartTime : float = 0.0;
@System.NonSerialized
var lastButtonDownTime : float = -100;
@System.NonSerialized
var jumpDir : Vector3 = Vector3.up;
}
var jumping : CharacterMotorJumping = CharacterMotorJumping();
class CharacterMotorMovingPlatform {
var enabled : boolean = true;
var movementTransfer : MovementTransferOnJump = MovementTransferOnJump.PermaTransfer;
@System.NonSerialized
var hitPlatform : Transform;
@System.NonSerialized
var activePlatform : Transform;
@System.NonSerialized
var activeLocalPoint : Vector3;
@System.NonSerialized
var activeGlobalPoint : Vector3;
@System.NonSerialized
var activeLocalRotation : Quaternion;
@System.NonSerialized
var activeGlobalRotation : Quaternion;
@System.NonSerialized
var lastMatrix : Matrix4x4;
@System.NonSerialized
var platformVelocity : Vector3;
@System.NonSerialized
var newPlatform : boolean;
}
var movingPlatform : CharacterMotorMovingPlatform = CharacterMotorMovingPlatform();
class CharacterMotorSliding {
// Does the character slide on too steep surfaces?
var enabled : boolean = true;
// How fast does the character slide on steep surfaces?
var slidingSpeed : float = 15;
// How much can the player control the sliding direction?
// If the value is 0.5 the player can slide sideways with half the speed of the downwards sliding speed.
var sidewaysControl : float = 1.0;
// How much can the player influence the sliding speed?
// If the value is 0.5 the player can speed the sliding up to 150% or slow it down to 50%.
var speedControl : float = 0.4;
}
var sliding : CharacterMotorSliding = CharacterMotorSliding();
@System.NonSerialized
var grounded : boolean = true;
@System.NonSerialized
var groundNormal : Vector3 = Vector3.zero;
private var lastGroundNormal : Vector3 = Vector3.zero;
private var tr : Transform;
private var controller : CharacterController;
function Awake () {
controller = GetComponent (CharacterController);
tr = transform;
}
private function UpdateFunction () {
// We copy the actual velocity into a temporary variable that we can manipulate.
var velocity : Vector3 = movement.velocity;
// Update velocity based on input
velocity = ApplyInputVelocityChange(velocity);
// Apply gravity and jumping force
velocity = ApplyGravityAndJumping (velocity);
// Moving platform support
var moveDistance : Vector3 = Vector3.zero;
if (MoveWithPlatform()) {
var newGlobalPoint : Vector3 =
movingPlatform.activePlatform.TransformPoint(movingPlatform.activeLocalPoint);
moveDistance = (newGlobalPoint - movingPlatform.activeGlobalPoint);
if (moveDistance != Vector3.zero)
controller.Move(moveDistance);
// Support moving platform rotation as well:
var newGlobalRotation : Quaternion = movingPlatform.activePlatform.rotation *
movingPlatform.activeLocalRotation;
var rotationDiff : Quaternion = newGlobalRotation *
Quaternion.Inverse(movingPlatform.activeGlobalRotation);
var yRotation = rotationDiff.eulerAngles.y;
if (yRotation != 0) {
// Prevent rotation of the local up vector
tr.Rotate(0, yRotation, 0);
}
}
// Save lastPosition for velocity calculation.
var lastPosition : Vector3 = tr.position;
// We always want the movement to be framerate independent. Multiplying by Time.deltaTime does this.
var currentMovementOffset : Vector3 = velocity * Time.deltaTime;
// Find out how much we need to push towards the ground to avoid loosing grouning
// when walking down a step or over a sharp change in slope.
var pushDownOffset : float = Mathf.Max(controller.stepOffset, Vector3(currentMovementOffset.x, 0,
currentMovementOffset.z).magnitude);
if (grounded)
currentMovementOffset -= pushDownOffset * Vector3.up;
// Reset variables that will be set by collision function
movingPlatform.hitPlatform = null;
groundNormal = Vector3.zero;
// Move our character!
movement.collisionFlags = controller.Move (currentMovementOffset);
movement.lastHitPoint = movement.hitPoint;
lastGroundNormal = groundNormal;
if (movingPlatform.enabled && movingPlatform.activePlatform != movingPlatform.hitPlatform) {
if (movingPlatform.hitPlatform != null) {
movingPlatform.activePlatform = movingPlatform.hitPlatform;
movingPlatform.lastMatrix = movingPlatform.hitPlatform.localToWorldMatrix;
movingPlatform.newPlatform = true;
}
}
// Calculate the velocity based on the current and previous position.
// This means our velocity will only be the amount the character actually moved as a res ult of collisions.
var oldHVelocity : Vector3 = new Vector3(velocity.x, 0, velocity.z);
movement.velocity = (tr.position - lastPosition) / Time.deltaTime;
var newHVelocity : Vector3 = new Vector3(movement.velocity.x, 0, movement.velocity.z);
// The CharacterController can be moved in unwanted directions when colliding with things.
// We want to prevent this from influencing the recorded velocity.
if (oldHVelocity == Vector3.zero) {
movement.velocity = new Vector3(0, movement.velocity.y, 0);
}
else {
var projectedNewVelocity : float = Vector3.Dot(newHVelocity, oldHVelocity) /
oldHVelocity.sqrMagnitude;
movement.velocity = oldHVelocity * Mathf.Clamp01(projectedNewVelocity) +
movement.velocity.y * Vector3.up;
}
if (movement.velocity.y < velocity.y - 0.001) {
if (movement.velocity.y < 0) {
// Something is forcing the CharacterController down faster than it should.
// Ignore this
movement.velocity.y = velocity.y;
}
else {
// The upwards movement of the CharacterController has been blocked.
// This is treated like a ceiling collision - stop further jumping here.
jumping.holdingJumpButton = false;
}
}
// We were grounded but just loosed grounding
if (grounded && !IsGroundedTest()) {
grounded = false;
// Apply inertia from platform
if (movingPlatform.enabled &&
(movingPlatform.movementTransfer == MovementTransferOnJump.InitTransfer ||
movingPlatform.movementTransfer == MovementTransferOnJump.PermaTransfer)
) {
movement.frameVelocity = movingPlatform.platformVelocity;
movement.velocity += movingPlatform.platformVelocity;
}
SendMessage("OnFall",SendMessageOptions.DontRequireReceiver);
// We pushed the character down to ensure it would stay on the ground if there was any.
// But there wasn't so now we cancel the downwards offset to make the fall smoother.
tr.position += pushDownOffset * Vector3.up; }}

Mais conteúdo relacionado

Semelhante a BeeT 3D documentation

Educational Game Design Thesis
Educational Game Design ThesisEducational Game Design Thesis
Educational Game Design ThesisCory Buckley
 
User Interface Design (University of Greenwich BIT Coursework) by Nay Linn Ko
User Interface Design (University of Greenwich BIT Coursework) by Nay Linn KoUser Interface Design (University of Greenwich BIT Coursework) by Nay Linn Ko
User Interface Design (University of Greenwich BIT Coursework) by Nay Linn KoNay Linn Ko
 
Units 14,15 Assignment Brief
Units 14,15 Assignment BriefUnits 14,15 Assignment Brief
Units 14,15 Assignment BriefZaxapias
 
Project Final Report Ismail MIM IT13078010 SHUID 24048259_final
Project Final Report Ismail MIM IT13078010 SHUID 24048259_finalProject Final Report Ismail MIM IT13078010 SHUID 24048259_final
Project Final Report Ismail MIM IT13078010 SHUID 24048259_finalIsmail Iqbal
 
FETC 2015 Advanced Game Design Presentation - Workshop
FETC 2015 Advanced Game Design Presentation - WorkshopFETC 2015 Advanced Game Design Presentation - Workshop
FETC 2015 Advanced Game Design Presentation - WorkshopMike Ploor
 
Research Proposal
Research ProposalResearch Proposal
Research ProposalYashIyengar
 
Unit 13 Assignment Brief
Unit 13 Assignment BriefUnit 13 Assignment Brief
Unit 13 Assignment BriefZaxapias
 
Report on car racing game for android
Report on car racing game for androidReport on car racing game for android
Report on car racing game for androidravijot singh
 
The Design and Development of a Prototype Community Banking Game
The Design and Development of a Prototype Community Banking GameThe Design and Development of a Prototype Community Banking Game
The Design and Development of a Prototype Community Banking GameITIIIndustries
 
Mta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_cropMta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_cropSLIMANI Marouen
 
Mta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_cropMta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_cropmarcelodelta
 
Capstone Report - Industrial Attachment Program (IAP) Evaluation Portal
Capstone Report - Industrial Attachment Program (IAP) Evaluation PortalCapstone Report - Industrial Attachment Program (IAP) Evaluation Portal
Capstone Report - Industrial Attachment Program (IAP) Evaluation PortalAkshit Arora
 
Game engineering(jiit 2013 14-cs&it)
Game engineering(jiit 2013 14-cs&it)Game engineering(jiit 2013 14-cs&it)
Game engineering(jiit 2013 14-cs&it)Rajat Bhatia
 
Ball Collecting game report
Ball Collecting game report Ball Collecting game report
Ball Collecting game report Dileep Maurya
 
(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)Ketut Swandana
 

Semelhante a BeeT 3D documentation (20)

Educational Game Design Thesis
Educational Game Design ThesisEducational Game Design Thesis
Educational Game Design Thesis
 
User Interface Design (University of Greenwich BIT Coursework) by Nay Linn Ko
User Interface Design (University of Greenwich BIT Coursework) by Nay Linn KoUser Interface Design (University of Greenwich BIT Coursework) by Nay Linn Ko
User Interface Design (University of Greenwich BIT Coursework) by Nay Linn Ko
 
Final Report
Final ReportFinal Report
Final Report
 
Units 14,15 Assignment Brief
Units 14,15 Assignment BriefUnits 14,15 Assignment Brief
Units 14,15 Assignment Brief
 
Project Final Report Ismail MIM IT13078010 SHUID 24048259_final
Project Final Report Ismail MIM IT13078010 SHUID 24048259_finalProject Final Report Ismail MIM IT13078010 SHUID 24048259_final
Project Final Report Ismail MIM IT13078010 SHUID 24048259_final
 
FETC 2015 Advanced Game Design Presentation - Workshop
FETC 2015 Advanced Game Design Presentation - WorkshopFETC 2015 Advanced Game Design Presentation - Workshop
FETC 2015 Advanced Game Design Presentation - Workshop
 
Research Proposal
Research ProposalResearch Proposal
Research Proposal
 
Unit 13 Assignment Brief
Unit 13 Assignment BriefUnit 13 Assignment Brief
Unit 13 Assignment Brief
 
Report on car racing game for android
Report on car racing game for androidReport on car racing game for android
Report on car racing game for android
 
The Design and Development of a Prototype Community Banking Game
The Design and Development of a Prototype Community Banking GameThe Design and Development of a Prototype Community Banking Game
The Design and Development of a Prototype Community Banking Game
 
Mta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_cropMta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_crop
 
Mta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_cropMta ssg soft_dev_individual_without_crop
Mta ssg soft_dev_individual_without_crop
 
Capstone Report - Industrial Attachment Program (IAP) Evaluation Portal
Capstone Report - Industrial Attachment Program (IAP) Evaluation PortalCapstone Report - Industrial Attachment Program (IAP) Evaluation Portal
Capstone Report - Industrial Attachment Program (IAP) Evaluation Portal
 
Mini Project- 3D Graphics And Visualisation
Mini Project- 3D Graphics And VisualisationMini Project- 3D Graphics And Visualisation
Mini Project- 3D Graphics And Visualisation
 
Game engineering
Game engineeringGame engineering
Game engineering
 
Game engineering(jiit 2013 14-cs&it)
Game engineering(jiit 2013 14-cs&it)Game engineering(jiit 2013 14-cs&it)
Game engineering(jiit 2013 14-cs&it)
 
Ball Collecting game report
Ball Collecting game report Ball Collecting game report
Ball Collecting game report
 
Accelerometer
Accelerometer Accelerometer
Accelerometer
 
Maker Boot Camp
Maker Boot CampMaker Boot Camp
Maker Boot Camp
 
(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)(Manual) auto cad 2000 visual lisp tutorial (autocad)
(Manual) auto cad 2000 visual lisp tutorial (autocad)
 

BeeT 3D documentation

  • 1. Beet 3D A WORK-STUDY COMPUTER GAME A PROJECT WORK SUBMITTED TO THE DEPARTMENT OF COMPUTER SCIENCE AND INFORMATION TECHNOLOGY BABCOCK UNIVERSITY ILISHAN – REMO OGUN STATE NIGERIA IN PARTIAL FULFILMENT OF THE REQUIREMENTS FOR THE AWARD OF BACHELOR OF SCIENCE DEGREE IN COMPUTER SCIENCE (INFORMATION SYSTEM) BY: BULURO, OLUWATOBI ENITAN MATRIC NO: 12/3718 APRIL 2015
  • 2. this page was intentionally left blank
  • 3. this page was intentionally left blank
  • 4. DEDICATION This project is dedicated to God Almighty and Babcock University Ilishan-Remo, Ogun Nigeria.
  • 5. ACKNOWLEDGEMENT I will like to thank God almighty for empowering me with wisdom, knowledge and understanding and for sparing our lives till the completion of this project and beyond. We give him praise and adoration. I also want to appreciate my parents for their funding and support through the project development phases. I also like to appreciate my project supervisor for his constant support, tutorials and guidance towards the completion of my project and also the Unity 3D team for the constant assistance with the use of their software.
  • 6. ABSTRACT A number of gaming software being developed do not consider the educational aspect of the gamer. Their objectives are either to develop better versions of their games using high-end graphic software or meet their own self-administered objective. The issue of work-study ignorance in Babcock University has increased through the years. Students now discourage attending any work-study activity due to fowl stories passed down every year to new students. Students also get discouraged because they don’t fully understand the idea behind work-study and community service. This project bridges the gap between students and work-study program involvement by developing a virtual environment which will teach students about working with their hands and participation in a work-study program in Babcock University.
  • 7. CONTENTS Page Declaration..……..…………………………………………………………………………………i Certification..……………………………………………………………………………………...ii Dedication………………………………………………………………………………………...iii Acknowledgement………………………………………………………………………………..iv Abstract……………………………………………………………………………………………v CHAPTER ONE: PROJECT INTRODUCTION 1.1 Introduction………………………………………………………………….…….1 1.2 Problem statement…………………………………………………………………2 1.3 Aim………………………………………………………………………………..3 1.4 General objectives…………………………………………………………………3 1.5 Methodology………………………………….…………………………………...3 1.6 Scope of the project…………………………………………………………….…4 1.7 Outcome of this project……………………………………………………………4 1.9 Organization of work…………………………………….………………………..5
  • 8. CHAPTER TWO: LITERATURE REVIEW 2.1 Introduction………………………………………………………………….…….6 2.2 Game development in Africa……………………………………………………...7 2.3 2D – 3D generation………………………………………………………………..8 2.3.1 Side-scrolling games………..……………………………………………..9 2.3.1 Top-down perspective games……………………………………………..9 2.4 Roles……………………………………………………………………………..11 2.5 Education and Gaming in Nigeria…………….………………………………….12 2.6 Related works…………………………………………………………………….12 2.7 Tabular review of related works/articles…………………………………………14 2.8 Theoretical framework…………………………………………………………...15 CHAPTER THREE: METHODOLOGY AND SYSTEM DESIGN 3.1 Introduction………………………………………………………………….…...16 3.2 Software development process model…………………………………………...16 3.3 Design tools……………………………………………………………………...16 3.3.1 What is a game engine?……………………………………………….....17 3.3.2 Unity 3D game engine…..…………………………………………….....17
  • 9. 3.3.3 What is 3D Modelling?…………………………………………………..19 3.4 Modelling of the proposed system……………………………………………….20 3.5 The proposed system……...………………………….…………………………..21 3.6 User and system requirements…………….……………………………………..21 3.6.1 User requirements…………….……..,…………………………………..21 3.6.2 System requirements…………….…..,…………………………………..24 3.7 Hardware and software requirements……………………………………………25 3.7.1 Hardware requirements…………….……..,……………………………..25 3.7.2 Software requirements…………….……..,………………………….…..25 CHAPTER FOUR: SOFTWARE IMPLEMENTATION 4.1 Introduction………………………………………………………………….…..26 4.2 Game interface…………………………………………………….......................26 4.2.1 The character………………………………………..................................27 4.2.2 Main menu...………………………………………..................................28 4.2.3 Start game………………………………………......................................29 4.2.4 Back………………………………………...............................................33 4.2.5 Credits………………………………………............................................33
  • 10. 4.2.6 Quit………………………………………................................................33 4.3 Software testing………………………………………………………………….34 CHAPTER FIVE: SUMMARY, RECOMMENDATION AND CONCLUSION 5.1 Summary…..……………………………………………………………….…….35 5.2 Recommendations ………………………………….……………………………36 5.3 Conclusion……………………………………………………………………….36 References………………………………………………………………………………………..37 Appendix……………………………………………………………………………………….......i
  • 11. LIST OF FIGURES 2.1 Awesomenaunts is a scrolling MOBA game…………………………….………..9 2.2 An example of a typical top-down, third-person view game, The Heist 2…..……9 2.3 First-person perspective as seen in STALKER: Shadow of Chernobly (2007)…...10 2.4 Call of Duty. An example of a 3rd person game…………………………………10 3.1 Player case diagram (Module 1)…………………………………………………10 3.2 Player case diagram (Module 2)…………………………………………………10 3.3 Player case diagram (Module 2A)………………………………………….……10 3.4 Player case diagram (Module 2B.………………………………………….……10 4.1 BeeT 3D configuration start page……….………………………………….........24 4.2 A student dressed in uniform for work-study……………………………………25 4.3 BeeT 3D configuration settings page…………………………………….………25 4.4 Main menu display……………………………………………………………….26 4.5 Sub main menu display………………………………………………………..…26 4.6 Main menu display………………….…………………………………………....27 4.7 Two students in work-study………………………..…………………….………29 4.8 The main gate of the school………………………..…………………….………29 4.9 A tuk-tuk (Keke) moving through the school…………………………………….29 4.10 Babcock Business School (BBS)…………………………………………………30
  • 12. 4.11 Babcock University teaching hospital (BUTH) ambulance………………………30 4.12 A plain view of the game environment…………………………………………...33 LIST OF TABLES 2.1 Examples of games and their release dates…………………………….………….7 2.2 Related works/articles…………………………………………………………....14
  • 13. CHAPTER ONE 1.1 INTRODUCTION Game playing is the design of artificial intelligence programs to be able to play more than one game successfully. For many years, computers are programmed to play these games using specially designed algorithms, which cannot be transferred to another context. For example, a single player computer game program cannot play a multiplayer game. General game playing was a project of the Stanford Logic Group of Stanford University, California which aims to create a platform for general game playing. There are other general game playing systems, which use their own languages for defining the game rules. In 1992, Barney Pell developed the system Metagame. This system was able to play a number of chess like games, given game rules definition in a special language. In 1998, the commercial system, Zillions of Games was developed by Jeff Mallet and Mark Lefler. The system used a LISP-like language to define the game rules. Zillions of games derived the evaluation function automatically from the rules based on piece mobility, board structure and game goals. Simulation games began with Will Wright opening the Sim series in 1989 with SimCity, a city building game. Certain games such as SimLife and SimEarth were subsequently created and are capable of teaching players the basics of genetics and global ecosystem. Simulation games aim to copy various activities form real life in form of a game for various purposes such as training, analysis or prediction. Examples are business games, war games, role playing games, war games or educational games. From three basic types of strategic, planning
  • 14. and learning exercises: games, simulations and case studies, a number of hybrids may be considered, including simulation games that are used as case studies. 1.2 PROBLEM STATEMENT A lot of gaming software being developed do not consider the educational or moral aspect of the gamer. Their objectives are either to develop better versions of their games using high-end graphic software or meet their own self-administered objective(s). Some simulation games that have also been developed also don’t consider the educational aspects of the gamers. Since the development of games, the only widely sold game that portrays developing countries like Nigeria, Iraq, etc. is Call of Duty – Advance Warfare. Due to these challenges, my simulation game project adopts a developing country scenario (Babcock University as case study) and impact educational concepts into the player of the game through the use of student work study and the concept of Artificial Intelligence in gamification.
  • 15. 1.3 AIM The aim of this project is to develop a game that will portray Babcock University as the case study thus, allowing students or other players of the game to easily understand the concepts and knowledge behind the development of the project. Thus, using an environment where players can easily relate/interact which will make the game more interesting for the players. 1.4 GENERAL OBJECTIVES 1. To help the new and old students understand the concept of work study and its positive effects on them by developing a virtual environment to simulate community service scenarios. 2. To assist new students getting accustomed with Babcock University’s environment and work study education. 3. To model the work-study program in 3D dimensional view. Thus, showing the students of Technical Drawing courses and students of Computer Technology modelling techniques. 1.5 METHODOLOGY Following the stated general objectives above, I will adopt a methodology in accordance with the System Development Life Cycle (SDLC) to attain them:  Methodology 1: To ascertain the viability of my project, I performed researches on Game Development, understand the concept of simulation gaming and development, research on educational games and study their methodologies to understand the concepts they used in developing. Also under this phase I ascertained the cost of running the project and risk management.
  • 16.  Methodology 2: In this phase, I conducted series of interviews with stake holders (old/new students of Babcock University and staff of the community service department) to find out details needed for work-study, locations in school where students can perform the services and also other requirements aimed towards Babcock University’s environment.  Methodology 3: In this phase I used a software called Unity 3D for the construction of the game’s environment in 3D dimensional view, MonoDevelop as an IIDE for scripting (coding) and made use of modelling software like Maya 3ds Max and Maya Autodesk. I also used system software like Paint and Pictures and an application software (Photoshop) in editing images needed in the development of the 3D environment. 1.6 SCOPE OF THE PROJECT The project emulates an environment (Babcock University) into virtual 3D and mimics an exact replica of different structure and objects available in the school. 1.7 OUTCOME OF THIS PROJECT A game called “BEET 3D” which will initially be developed for PC (Windows).
  • 17. 1.8 ORGANIZATION OF WORK The game software will be made up of five chapters to be explained below: Chapter One (Introduction) Chapter Two (Literature Review): In this chapter, I discussed the brief summary of gaming and simulations to understand its history and how it has evolved in the past years thus, showing me how to better build my project. Chapter Three (methodology and system design): In this chapter, I discussed the methodologies used in the development of this game and also the design processes involved in the development. Chapter Four (Implementation and Testing): In this chapter, I discussed the requirements, specifications, implementation and testing of the software. Chapter Five (Summary and Conclusions): In this chapter, I discussed my findings so far and summarized the processes involved in the development of this project.
  • 18. CHAPTER TWO LITERATURE REVIEW 2.1 INTRODUCTION Game development is the process of creating a game. The development may range from a single developer to a large organization of developers. Commercial PC and console games are normally developed by a publisher (e.g. EA sports, BT games, Capricon, etc.) and may take several years to develop. The development of the first video games in the 1950s needed mainframe computers which were not available to the general public. With the introduction of the 1st generation of game consoles in the 1970s, commercial game development started its wave of popularity, where game consoles and home computers could be accessible by the public. Due to low costs and low capabilities of computers, a lone programmer can develop a full game, but in a period of time depending on the type of game to be developed. Computer Space was the first commercially sold video game. It was a black-and-white game and the computers system was made of 74 series TTL chips (one of the early chips found in early computer systems). Due to the revolution of science in the 21st century, the price of a lone programmer creating a game has risen to be quite expensive. But the development of mobile-based games have still remained less expensive to no expense in some cases. Console games and PC games are generally developed in phases. The pre-production phase, where the developer(s) create prototype and write documents (e.g. a proposal to contain concepts, gameplay, feature list, settings, audience, etc.) to be presented to sponsors, prototype to be presented to a focus group of gamers, and other external bodies for the review of the
  • 19. proposal/intended game. If the intended game is approved, the developer(s) may receive funding, start advertisement, set a deadline date and then development of the game begins. In the development of a major game, the developers range from different fields which include programmers, artists, voice actors, designers, testers, sound effect, focus group, etc. Mobile game development on the other hand is faster in its production. In most cases it takes less than a year of production and mostly a lone developer in its development. Due to the small market and investment needed for mobile game development, mobile game development is now seen as an avenue for small businesses or individuals to enter the gaming industry. Game development period ranges according to different factors which include genre of the game, among other factors for game development. Some examples of games and their release dates are: Game Development begins Date released 1. Spore 1999 2008 2. Prey 1997 2006 3. Duke Nuken Forever 1997 2011 4. Team Fortress 2 1998 2007 Table 2.1 - Examples of games and their release dates 2.2 Game development in Africa Game development in Africa wasn’t a recognizable sector until recent times. The largest gaming market in Africa is in South Africa. The market is overtaking the market in movies and music in the country. In Nigeria, game development also started making wave when games like Call of Duty, basketball games, FIFA football games among others started using our environments. The
  • 20. use of our Nigerian environment in games inspires us to purchase those kind of games and also produce games of ours. Gaming companies like Gameplus Limited, Techline Communications, Simply Fun Limited, Impedence Systems Company, Kuluya, among others, have been newly introduced companies into the gaming sector. Kuluya for example focuses on developing games in which the environment is Nigerian-based. The company also uses characters which are dark skinned to make the games enjoyable from different perspective. 2.3 2D – 3D GENERATION 2D computer game graphics started in the 1950s which is based on vector graphics devices and is the computer-based generation of digital images. 2D was mainly used in applications that were originally developed upon traditional printing and drawing technologies, such as typography, cartography, technical drawing, etc. Games utilizing parallel projection typically make use of 2D, allowing developers to create large, complex gameworlds efficiently and with relatively few art assets. Examples of 2D driven games are:
  • 21. 2.3.1 Side-scrolling games Fig 2.1 - Awesomenauts is a scrolling MOBA game. 2.3.2 Top-down perspective games Fig 2.2 - An example of a typical top-down, third-person view game, The Heist 2 With the introduction of 3D accelerated graphics, video games could go beyond the old technology of 2D. in 3D games, real life scenarios and intended graphics are easily seen from different perspectives. There has also been an introduction of backgrounds to 3D games due to its flexibilities in movement and graphics.
  • 22. There have also been different gaming graphical perspectives that come with 3D which include 1st person, 3rd person, Stereo graphics, among others. 1st person perspective example Fig 2.3 - First-person perspective as seen in STALKER: Shadow of Chernobly (2007). 3rd person perspective example Fig 2.4 - Call of Duty. An example of a 3rd person game.
  • 23. 2.4 Roles 1. Producers: Internal producers working for the developers are known as internal producers and manages the development team, staff etc. the producer may also be referred to as project manager, project lead or director. 2. Publisher: Is responsible for the publishing of the develop game, also responsible for advertising, marketing, and all the responsibilities a publisher in other sector is supposed to have. They usually deal with finances of the project in some cases. 3. Designer: A designer is one who designs the gaming structure of the game, the gameplay, rules, etc. the designer is in charge of the writing the story line of the game. 4. Artist: A game artist is one who creates game arts which his overseen by an art director. The artist may be tasked with a 2D or 3D oriented work depending on the genre and other factors of the game to be developed. 5. Development Team: The development team range from about 2 people to a team of 100. The size of the team depends on the type of game to be developed. Like discussed above, a mobile based game doesn’t need a very large development team (1 – 50), whereas, a PC or console development team may rage higher from about 20 – 100 team members. 6. Programmers: A programmer is a software engineer who primarily develops video games using game development tools like Unity 3d, 3D Max, etc. the coding aspect of the game is handled by the programmer. Programming discipline roles include: physics, AI (Artificial Intelligence), Gameplay, Sound programming, UI (User Interface), Scripting, Game tools usage, etc.
  • 24. 7. Tester: Testers are in charge of making sure the quality expected from the game is met. They test the game periodically during the development period to make sure that all necessary expected features are met. 8. Focus Group: The focus group can be of about 3 – higher number of people. The can function as testers but their main aim is to brain storm and figure out extra features to be added to the game to be developed. 9. Maintenance group: After the release of a game, the maintenance phase for the game begins. Series of updates become available in order to fix bugs on those released games. 2.5 Education and Gaming in Nigeria Many universities in Nigeria don’t or never offer classes specifically focused on game development. It is not yet seen as a relevance to schools in Nigeria to include gaming as an aspect of Computer studies. 2.6 RelatedWorks (This is a review of related simulation gaming software) 1. The Sims is a life simulation video game series developed by EA Maxis and published by Electronic Ar. In The Sims, the players create virtual people called “Sims” and places them in houses and help direct their moods and satisfy their desires.
  • 25. The Sims 3 Minimum System Requirement 1. CPU (INTEL): Pentium 4 2.0GHz 2. CPU (AMD): Athlon XP 3. GPU (NVidia): GeForce 2 MX 400 64MB 4. GPU (AMD): Radeon 8500 Series 64MB 5. RAM: 1 GB 6. Operating System: Window 7 7. Direct X: DX 8 8. Hard Disk Drive Space: 4 GB Even though The Sims was one of the first widely sold simulation games to be developed, it never depicted the real life scenario of a developing country (e.g. Nigeria). The Sims not only avoided the portraying of developing countries but got a lot of critics which based their opinions that The Sims doesn’t teach young good morals. It was also developed to be played on Microsoft Windows 7. Thus, compatibility issues occur. 2. Second Life is an online virtual world, developed by Linden Lab. Second life users create virtual representations of themselves called avatars and are able to interact with other avatars, places and objects. They can explore the world (known as the grid), meet other residents, socialize, participate in individual and group activities, build, create, shop and trade virtual property and services with one another. Second Life Minimum System Requirement 1. GPU (NVidia): GeForce 2 MX 400 64MB 2. GPU (AMD): Radeon 8500 Series 64MB 3. RAM: 2 GB
  • 26. 4. Direct X: DX 8 5. (Note: the game is played online so no need for interior CPU requirements and operating system requirements). Second Life was also one of the first simulation games too be online based thus, meeting more people from different geographical regions. But, its limit to only been able to be played online makes it not easily accessible in developing countries due to the low quality internet capacity. 2.7 Tabular Review of RelatedWorks/Articles. TITLE AUTHOR/PUBLISHER CONTRIBUTION GAP 1. The Sims Electronic Art Maxis First widely sold Simulation game. - Ignorance of developing countries. - Compatibility issues. 2. Second Life Linden Lab First online based simulation game. -ignorance of developing countries. Table 2.2 – Related works/articles With proper study of these works and gaps I’ve worked out tools and techniques to be used in this project. The programming tool to be used will be monoDevelop, game design tool will be Unity 3d, and modelling tool would be Blender and Maya. This project will also be developed to match our current location (Babcock University).
  • 27. 2.8 TheoreticalFramework Fig 2.5 – Prefix model for Theoretical framework (Okoro R. et al, 2013) In the development of this project, I followed the above theoretical framework in arriving at certain findings and conclusions.
  • 28. CHAPTER THREE METHODOLOGY AND SYSTEM DESIGN 3.1 INTRODUCTION This chapter reviews the different components of my game software by analysis of each system and software component. There will be analysis of the software game features and properties. 3.2 SOFTWARE DEVELOPMENT PROCESS MODEL The software development process model to be used will be the waterfall model because the requirements and specifications are well-defined. 3.3 DESIGN TOOLS To achieve my game software, I will make use of the following:  A game engine (used to design the game environment, a general platform for which the game will be worked upon).  Two 3D modelling software (which will be used to design, construct and model objects like humans, buildings and other rigid objects).
  • 29. 3.3.1 What is a Game Engine? A game engine is a software framework designed for the creation and development of video games. The core functionality typically provided by a game engine includes a rendering engine, physics engine or collision detection, scripting, animation and artificial intelligence. Game engines provide platform abstraction, allowing the same game to run on various platforms including game consoles and mobile devices. Examples of game engines: Blender, Delta3D, Oxygine, Panda3D, Retribution Engine, Unreal Engine 4, Wire3D, 3D Rad, Dim3, Unity 3D, ORX, etc. For the development of this game software, I used Unity 3D game engine. 3.3.2 Unity 3D Game Engine Unity is a cross-platform game creation software which consist of a game engine, Integrated Development Environment (IDE) and monoDevelop (for scripting) developed by Unity Technologies. It is used to develop video games for websites, desktop platforms, consoles and mobile devices. First announced only for the Mac OS and since been extended to target more than fifteen platforms.It is now the default software development kit (SDK) for the Nintendo Wii.
  • 30. Features of Unity 3D game engine 1. Rendering The graphics engine targets Direct3D on Windows and Xbox 360, OpenGL on Mac, Windows and Linux, OpenGL ES on android and iOS and other proprietary API’s on video game consoles. Unity supports assets and file formats from 3ds Max, Maya, Blender, Cinema 4D, Cheetah3D, Adobe Photoshop, Adobe Fireworks and Algorithmic substance (these are modelling software). These assets can be added to the game project, and managed through Unity's graphical user interface. 2. Scripting Unity game engine’s scripting is built on Mono (the open-source implementation of the .NET Framework). I used UnityScript (a custom language; part of JavaScript), c# and Boo (which has a python-inspired syntax). MonoDevelop is a build in IDE for the implementation and coding in Unity. 3. Platform Unity 3D supports multiple platforms. In the development of a game, unity can compile the output of games to web browsers, mobile devices, desktops and consoles. Unity also allows specification of texture compression and resolution settings for each platform the game supports. Currently supported platforms for Unity 3D include Windows 8, Windows Phone 8, BlackBerry 10, Windows, Mac, Linux, Android, iOS, Unity Web Player, Adobe Flash, PlayStation 3, PlayStation 4, Xbox 360, Xbox One and some other PlayStation platforms, etc.
  • 31. 4. Asset store Unity's Asset Store is home to a growing library of free and commercial assets created both by Unity Technologies and also members of the community. A wide variety of assets is available, covering everything from textures, models and animations to whole project examples, tutorials and Editor Extensions. The assets are accessed from a simple interface built into the Unity Editor and are downloaded and imported directly into your project. 5. Physics/Rigidbodies Unity has NVIDIA PhysX physics engine built-in. This allows for unique emergent behavior and has many useful features like real-time cloth simulation on arbitrary and skinned meshes, thick ray casts, and collision layers. Rigidbodies are physically simulated objects. You use Rigidbodies for things that the player can push around, for example crates or loose objects, or you can move Rigidbodies around directly by adding forces to it by scripting. 3.3.3 What is 3D modelling? 3D modelling is the process of developing a mathematical representation of any three- dimensional surface of an object (either inanimate or living) via specialized software. The product/result is called 3D model. Wikipedia, (2014). For the development of the game software, I used Autodesk Maya and Autodesk 3ds Max.
  • 32. a) Autodesk Maya Autodesk Maya (also shortened as Maya) is a 3D graphics computer software that runs on Windows, OS X and Linux. It is used to create interactive 3D applications, including video games, animation films, TV series or visual effects. b) Autodesk 3ds Max Autodesk 3ds Max is a professional 3D computer graphics program for making 3D animations, models, games and images. It has modelling capabilities, a flexible plugin architecture and can be used on the Microsoft Windows platform. It is also used by game developers and for movie effects and visualization. 3.4 MODELLING OF THE PROPOSEDSYSTEM 1. Terrain construction: A terrain is the ground in which all objects in Unity stand or are placed. I created it using the “Create terrain” tool in Unity’s tool bar. 2. Weather and cloud: The cloud is formed by a weather simulation plugin available in Unity game engine. 3. Buildings and structures: The buildings and structures in the game are constructed in Autodesk Maya and 3ds Max and imported to Unity engine as rigid bodies. 4. Road path: the road path in our game was constructed using a “create road” asset from the Unity Asset Store and plain from Unity’s Engine.
  • 33. 5. The game software will be a centered on Babcock University, using the university as her case study, adopting structures in the university to be represented in the game. 3.5 THE PROPOSED SYSTEM  Game interface o Game menu  Start game Clicking the “Start game” icon sends a command to the system which begins the game.  About Clicking the “About” icon displays a view of the developers of the game software.  Quit game Clicking the “Quit game” icon sends a command to the system which terminates the software. 3.6 USER AND SYSTEM REQUIREMENTS 3.6.1 USER REQUIREMENTS STUDENT (PLAYER) a. Student shall be able to start the game. b. Student shall be able to create a new profile or load an old profile.
  • 34. c. Student shall be able to play free roam. d. Student shall be able to navigate to places of desire on the terrain. e. Student shall be able to pause the game. f. Student shall be able to quit the game. Fig 3.1 – Player case diagram (Module 1) Fig 3.2 – Player case diagram (Module 2)
  • 35. Fig 3.3 – Player case diagram (Module 2A) Fig 3.4 – Player case diagram (Module 2B)
  • 36. 3.6.2 SYSTEM REQUIREMENTS a) FUNCTIONALREQUIREMENTS When the user clicks start game on the main menu, the game loads up programmed levels form the scripting and displays the interface to the screen for use by the player. The player uses inputs on the keyboard to move and interact with objects in the game. The player hits keys like Up Arrow, Left Arrow, Right Arrow and Down Arrow for movement of objects (character, objects, etc.), Space Bar for Jumping, Left Shift key for sprinting or moving faster, Escape (Esc.) For Menu option and the Track Pad for looking and direction. When these keys are clicked, the system takes in the command, compares the input to the scripting I coded during development and performs the desired action on display. When the user clicks the Escape (Esc) button, the system also takes in the command, compares with the right result for that input in the scripting and displays the Pause Menu Screen where the user can also select to continue playing the game, read the About for the game and Quit the game. b) NONFUNCTIONALREQUIREMENTS a. Game will load within seconds.  Game should work fast without any hangs or buffer.  Game should enhance its 3D abilities on different systems.  Game should be able to run without help, assistance or installation of third party software.
  • 37.  Game will not consume RAM space in a system.  Game software will be able to adapt to newly developed systems, thus, extensibility of the software.  Game software will show Babcock University in 3D and also have a view of future infrastructure for the university. 3.7 HARDWARE AND SOFTWARE REQUIREMENTS 3.7.1 Hardware Requirements a. RAM: 1 GB or more b. System type: 64-bit Operating system c. Direct X: DX 8 or more d. Hard Disk Drive Space: 4 GB (minimum) e. Minimum processor speed: 1.50GHz 3.7.2 Software Requirements a. Unity 3D b. Autodesk Maya c. Autodesk 3ds Max d. Microsoft Windows Operating System: Windows XP, Windows 7, Windows 8 and Windows 10.
  • 38. CHAPTER FOUR SOFTWARE IMPLEMENTATION 4.1 INTRODUCTION Implementation is process of integrating a plan, software design, requirements and algorithm into software applications. It is the first phase to the successful completion of a software application. The implementation of product software is the final link in the deployment chain of software production and all requirements are evaluated to ensure quality software development before delivering it to the end-users. 4.2 GAME INTERFACE On game startup, configuration settings which includes graphic resolution and controller setting appears which enables users to choose their most preferred functional settings whereby resolution and quality can be adjusted as well gaming controls. Fig 4.1 - BeeT 3D configuration start page
  • 39. 4.2.1 THE CHARACTER The work-study character in the game is portrayed to dress like a proper person in service. Fig 4.2 - A student dressed in uniform for work-study Fig 4.3 - BeeT 3D configuration settings page
  • 40. 4.2.2 MAIN MENU Fig 4.4 - Main menu display As the game is launched, the first page to be displayed will be a sub main menu Fig 4.5 - Sub main menu display Once the “Click to begin” button is clicked, the next page to be displayed would be the main menu where various options can be selected;
  • 41. Fig 4.6 - Main menu display 4.2.3 START GAME When the “Start Game” button is selected, a scene (Level 1) is loaded displaying the character in a tuk-tuk (Keke) at a start point (Babcock University’s main gate) where the first objective is to navigate to the University’s stadium. When the objective (locate the Stadium) is completed, another level is loaded where the player will be assigned his hostel, courses and other requirements of a student. Other objective include to locate the cafeteria, perform certain work study roles like sweep, clear an area, etc., to gain points. The gained points can be used to buy books at the book shop, buy refreshments and food items. After completion of objectives, the free roam option can be selected where the player has the opportunity to roam the university and explore certain areas in the school. On exit, the current game play level will be saved and can be restored on return of the player.
  • 42. a) AUDIO PLAYBACK During game play, certain audio sounds are played in order to fully reproduce locations in the University. The audio files were added by java scripts available in the appendix. b) IMAGES OF LOCATIONS IN THE GAME Fig 4.7 - Two students in work-study
  • 43. Fig 4.8 - The main gate of the school Fig 4.9 - A tuk-tuk (Keke) moving through the school
  • 44. Fig 4.10 - Babcock Business School (BBS) Fig 4.11 – Babcock University teaching hospital (BUTH) ambulance
  • 45. Fig 4.12 - A plain view of the game environment 4.2.4 BACK The back button is takes the player back to the sub-menu where the player has the options of quit or resume the game. 4.2.5 CREDITS When the “Credits” button is pressed a looped video sequence is started to display the credits for the game development. 4.2.6 QUIT The “Quit” button closes the game and ends every system process associated with BeeT 3D.
  • 46. 4.3 SOFTWARE TESTING Software testing is the execution of the software with actual test data with goals like verify that all requirements are implemented correctly, identifies defects before software deployment and help improve quality and reliability. The various testing techniques were implemented: - Platform Testing: In platform testing, the game was tested on other devices such as android devices (tabs and smart phones). - Extensibility Testing: The game software was developed on a Windows 7 and Windows 8 system, thus, an extensibility test was conducted where the software was installed and played on lower operating systems like Windows XP and higher operating systems like Windows 8.1 and they all yielded positive outcomes.
  • 47. CHAPTER FIVE SUMMARY, RECOMMENDATION AND CONCLUSION 5.1 SUMMARY Application of BeeT 3D for the familiarity of Babcock University using knowledge from artificial intelligence, database management and JavaScript, Boo and C # will assist students or parents in easily understanding the game environment (Babcock University). The firstchapterof this projectintroducedthe aimof thisproject,problemswithcurrentlyusedengines or game dimensioning and ways to tackle them. The second chapter discussed research works done by other game developers and the problems faced or discovered with the way I suggested to avoid them. The third chapter discussed the system analysis and design phases to be followed and also the tools to be used during software design. The forth chapter explained the implementation of the system and a review of the performance of the system which were further portrayed with diagrams from the game. The fifth chaptersummarizesthe projectwithrecommendations for future versions or enhancements.
  • 48. 5.2 RECOMMENDATIONS BeeT 3D game is extensible, thus, chances of future upgrades or modifications are possible. Recommended future upgrades or modifications may include: 1. Availability of classroom lectures to fully simulate learning environment. 2. Transformation of the game’s objectives into free roam and objective oriented gameplay. 3. Game to be used in explanation of the concept of modelling & simulation, artificial intelligence and Java Scripting language case study. 4. Full simulation of Babcock University to portray students, lecturers and other features present or developed over time to aid easier understanding of the environment. 5.3 CONCLUSION In conclusion, this project will serve the purpose for which it is being developed. It has been found that players of car-games experience a thrill and fulfillment which they can never experience in real life. Car controlled movement through Babcock University with the sole aim of reaching a particular destination increases the player’s determination and concentration. Unlike in the real world, you don't have to worry of accidents or getting hurt.
  • 49. REFERENCES Ken Jones, (1995). Simulations: “A handbook for teachers and trainers”. Danny Saunders, Jacqui Severn: “Simulation and Games for Strategy and Policy Planning”. Michael Genesereth and Nathaniel Love. General Game Playing: Overview of the AAAI Competition. List of Gaming companies in Nigeria. Available at: www.companylist.org/companiesnigeria (Retrieved 2014-10-07). 2D computer graphics. Available at: www.wikipedia.com/2dcomputer_graphics (Retrieved 2014-10-07). First-person perspective. Available at: www.wikipedia.com/firstperson_perspecctive (Retrieved 2014-10-07). Virpi Ruohamaki. A simulation game for the development of administrative work processes. (Retrieved 2014-10-07). Danny Sauders: Introducing simulations and games for business. (Retrieved 2014-10- 06). Thomas Grip. 4-Layers, A Narrative Design Approach. (Retrieved 2014-09-20). David Jaques: Games, simulations and case studies – a review. (Retrieved 2014-10-07). Jussi Holopainen and Staffan Björk. Game Design Patterns. (Retrieved 2014-10-07). Dejaime Antonio de Oliveira Neto. Intelligent 2D Collision and Pixel Perfection Precision. (Retrieved 2014-10-07). Marko Nemberg. Beginning Guide to User Testing With Child. Available at: www.gamedev.net/beginningguide. (Retrieved 2014-10-07).
  • 50. Angel Cagle. The Pros and Cons of Going to College for Game Development/Design. Available at: www.gamedev.net/prosandcons_college. (Retrieved 2014-10-07). Ken Jones, (1995). Simulations: A handbook for teachers and trainers. Danny Saunders, Jacqui Severn: Simulation and Games for Strategy and Policy Planning. Michael Genesereth and Nathaniel Love (1996): “Games and Simulations to Enhance Quality Learning”.
  • 51. APPENDIX MAIN MENU JavaScript (.js) #pragma strict function OnGUI() { if (GUI.Button(Rect(210,200,300,40),"Start Game")) { Application.LoadLevel("plan"); } if (GUI.Button(Rect(210,250,300,40),"Back")) { Application.LoadLevel("MainMenu"); } if (GUI.Button(Rect(210,300,300,40),"Credits")) { Application.LoadLevel("Credits"); } if (GUI.Button(Rect(210,350,300,40),"Quit")) { Application.Quit(); } } SUB MENU – JavaScript (.js) #pragma strict function OnGUI() { GUI.Box(Rect(520,0,300,40),"Welcome"); if (GUI.Button(Rect(520,500,300,40),"Click to begin")) { Application.LoadLevel("SubMenu"); } } FPS Input controller movement – JavaScript (.js)
  • 52. private var motor : CharacterMotor; // Use this for initialization function Awake () { motor = GetComponent(CharacterMotor); } // Update is called once per frame function Update () { // Get the input vectorfrom kayboard or analog stick var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); if (directionVector != Vector3.zero) { // Get the length of the directon vectorand then normalize it // Dividing by the length is cheaper than normalizing when we already have the length anyway var directionLength = directionVector.magnitude; directionVector = directionVector / directionLength; // Make sure the length is no bigger than 1 directionLength = Mathf.Min(1, directionLength); // Make the input vector more sensitive towards the extremes and less sensitive in the middle // This makes it easier to control slow speeds when using analog sticks directionLength = directionLength * directionLength; // Multiply the normalized direction vector by the modified length directionVector = directionVector * directionLength; } // Apply the direction to the CharacterMotor motor.inputMoveDirection = transform.rotation * directionVector; motor.inputJump = Input.GetButton("Jump"); } // Require a character controller to be attached to the same game object @script RequireComponent (CharacterMotor) @script AddComponentMenu ("Character/FPS Input Controller") Mouse Look – C# (.cs) using UnityEngine; using System.Collections; public class MouseLook : MonoBehaviour {
  • 53. public enum RotationAxes { MouseXAndY= 0, MouseX= 1, MouseY= 2 } public RotationAxes axes = RotationAxes.MouseXAndY; public float sensitivityX = 15F; public float sensitivityY = 15F; public float minimumX = -360F; public float maximumX = 360F; public float minimumY = -60F; public float maximumY = 60F; float rotationY = 0F; void Update () { if (axes == RotationAxes.MouseXAndY) { float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); } else if (axes == RotationAxes.MouseX) { transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); } else { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0); } } void Start () { // Make the rigid body not change rotation if (rigidbody)
  • 54. rigidbody.freezeRotation = true; } } CONTROLLER MOTOR JAVA SCRIPT #pragma strict #pragma implicit #pragma downcast // Does this script currently respond to input? var canControl : boolean = true; var useFixedUpdate : boolean = true; // For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspector view. // Very handy for organization! // The current global direction we want the character to move in. @System.NonSerialized var inputMoveDirection : Vector3 = Vector3.zero; // Is the jump button held down? We use this interface instead of checking // for the jump button directly so this script can also be used by AIs. @System.NonSerialized var inputJump : boolean = false; class CharacterMotorMovement { // The maximum horizontal speed when moving var maxForwardSpeed : float = 100.0; var maxSidewaysSpeed : float = 100.0; var maxBackwardsSpeed : float = 100.0; // Curve for multiplying speed based on slope (negative = downwards)
  • 55. var slopeSpeedMultiplier : AnimationCurve = AnimationCurve(Keyframe(-90, 1), Keyframe(0, 1), Keyframe(90, 0)); // How fast does the character change speeds? Higher is faster. var maxGroundAcceleration : float = 30.0; var maxAirAcceleration : float = 20.0; // The gravity for the character var gravity : float = 10.0; var maxFallSpeed : float = 20.0; // For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspectorview. // Very handy for organization! // The last collision flags returned from controller.Move @System.NonSerialized var collisionFlags : CollisionFlags; // We will keep track of the character's current velocity, @System.NonSerialized var velocity : Vector3; // This keeps track of our current velocity while we're not grounded @System.NonSerialized var frameVelocity : Vector3 = Vector3.zero; @System.NonSerialized var hitPoint : Vector3 = Vector3.zero; @System.NonSerialized var lastHitPoint : Vector3 = Vector3(Mathf.Infinity, 0, 0); }
  • 56. var movement : CharacterMotorMovement = CharacterMotorMovement(); enum MovementTransferOnJump { None, // The jump is not affected by velocity of floor at all. InitTransfer, // Jump gets its initial velocity from the floor, then gradualy comes to a stop. PermaTransfer, // Jump gets its initial velocity from the floor, and keeps that velocity until landing. PermaLocked // Jump is relative to the movement of the last touched floor and will move togetherwith that floor. } // We will contain all the jumping related variables in one helper class for clarity. class CharacterMotorJumping { // Can the character jump? var enabled : boolean = true; // How high do we jump when pressing jump and letting go immediately var baseHeight : float = 1.0; // We add extraHeight units (meters) on top when holding the button down longer while jumping var extraHeight : float = 4.1; // How much does the character jump out perpendicular to the surface on walkable surfaces? // 0 means a fully vertical jump and 1 means fully perpendicular. var perpAmount : float = 0.0; // How much does the character jump out perpendicular to the surface on too steep surfaces? // 0 means a fully vertical jump and 1 means fully perpendicular. var steepPerpAmount : float = 0.5; // For the next variables, @System.NonSerialized tells Unity to not serialize the variable or show it in the inspectorview. // Very handy for organization! // Are we jumping? (Initiated with jump button and not grounded yet)
  • 57. // To see if we are just in the air (initiated by jumping OR falling) see the grounded variable. @System.NonSerialized var jumping : boolean = false; @System.NonSerialized var holdingJumpButton : boolean = false; // the time we jumped at (Used to determine for how long to apply extra jump power after jumping.) @System.NonSerialized var lastStartTime : float = 0.0; @System.NonSerialized var lastButtonDownTime : float = -100; @System.NonSerialized var jumpDir : Vector3 = Vector3.up; } var jumping : CharacterMotorJumping = CharacterMotorJumping(); class CharacterMotorMovingPlatform { var enabled : boolean = true; var movementTransfer : MovementTransferOnJump = MovementTransferOnJump.PermaTransfer; @System.NonSerialized var hitPlatform : Transform; @System.NonSerialized var activePlatform : Transform; @System.NonSerialized var activeLocalPoint : Vector3;
  • 58. @System.NonSerialized var activeGlobalPoint : Vector3; @System.NonSerialized var activeLocalRotation : Quaternion; @System.NonSerialized var activeGlobalRotation : Quaternion; @System.NonSerialized var lastMatrix : Matrix4x4; @System.NonSerialized var platformVelocity : Vector3; @System.NonSerialized var newPlatform : boolean; } var movingPlatform : CharacterMotorMovingPlatform = CharacterMotorMovingPlatform(); class CharacterMotorSliding { // Does the character slide on too steep surfaces? var enabled : boolean = true; // How fast does the character slide on steep surfaces? var slidingSpeed : float = 15; // How much can the player control the sliding direction? // If the value is 0.5 the player can slide sideways with half the speed of the downwards sliding speed. var sidewaysControl : float = 1.0;
  • 59. // How much can the player influence the sliding speed? // If the value is 0.5 the player can speed the sliding up to 150% or slow it down to 50%. var speedControl : float = 0.4; } var sliding : CharacterMotorSliding = CharacterMotorSliding(); @System.NonSerialized var grounded : boolean = true; @System.NonSerialized var groundNormal : Vector3 = Vector3.zero; private var lastGroundNormal : Vector3 = Vector3.zero; private var tr : Transform; private var controller : CharacterController; function Awake () { controller = GetComponent (CharacterController); tr = transform; } private function UpdateFunction () { // We copy the actual velocity into a temporary variable that we can manipulate. var velocity : Vector3 = movement.velocity; // Update velocity based on input velocity = ApplyInputVelocityChange(velocity); // Apply gravity and jumping force velocity = ApplyGravityAndJumping (velocity);
  • 60. // Moving platform support var moveDistance : Vector3 = Vector3.zero; if (MoveWithPlatform()) { var newGlobalPoint : Vector3 = movingPlatform.activePlatform.TransformPoint(movingPlatform.activeLocalPoint); moveDistance = (newGlobalPoint - movingPlatform.activeGlobalPoint); if (moveDistance != Vector3.zero) controller.Move(moveDistance); // Support moving platform rotation as well: var newGlobalRotation : Quaternion = movingPlatform.activePlatform.rotation * movingPlatform.activeLocalRotation; var rotationDiff : Quaternion = newGlobalRotation * Quaternion.Inverse(movingPlatform.activeGlobalRotation); var yRotation = rotationDiff.eulerAngles.y; if (yRotation != 0) { // Prevent rotation of the local up vector tr.Rotate(0, yRotation, 0); } } // Save lastPosition for velocity calculation. var lastPosition : Vector3 = tr.position; // We always want the movement to be framerate independent. Multiplying by Time.deltaTime does this. var currentMovementOffset : Vector3 = velocity * Time.deltaTime; // Find out how much we need to push towards the ground to avoid loosing grouning // when walking down a step or over a sharp change in slope. var pushDownOffset : float = Mathf.Max(controller.stepOffset, Vector3(currentMovementOffset.x, 0, currentMovementOffset.z).magnitude); if (grounded) currentMovementOffset -= pushDownOffset * Vector3.up;
  • 61. // Reset variables that will be set by collision function movingPlatform.hitPlatform = null; groundNormal = Vector3.zero; // Move our character! movement.collisionFlags = controller.Move (currentMovementOffset); movement.lastHitPoint = movement.hitPoint; lastGroundNormal = groundNormal; if (movingPlatform.enabled && movingPlatform.activePlatform != movingPlatform.hitPlatform) { if (movingPlatform.hitPlatform != null) { movingPlatform.activePlatform = movingPlatform.hitPlatform; movingPlatform.lastMatrix = movingPlatform.hitPlatform.localToWorldMatrix; movingPlatform.newPlatform = true; } } // Calculate the velocity based on the current and previous position. // This means our velocity will only be the amount the character actually moved as a res ult of collisions. var oldHVelocity : Vector3 = new Vector3(velocity.x, 0, velocity.z); movement.velocity = (tr.position - lastPosition) / Time.deltaTime; var newHVelocity : Vector3 = new Vector3(movement.velocity.x, 0, movement.velocity.z); // The CharacterController can be moved in unwanted directions when colliding with things. // We want to prevent this from influencing the recorded velocity. if (oldHVelocity == Vector3.zero) { movement.velocity = new Vector3(0, movement.velocity.y, 0); } else { var projectedNewVelocity : float = Vector3.Dot(newHVelocity, oldHVelocity) / oldHVelocity.sqrMagnitude;
  • 62. movement.velocity = oldHVelocity * Mathf.Clamp01(projectedNewVelocity) + movement.velocity.y * Vector3.up; } if (movement.velocity.y < velocity.y - 0.001) { if (movement.velocity.y < 0) { // Something is forcing the CharacterController down faster than it should. // Ignore this movement.velocity.y = velocity.y; } else { // The upwards movement of the CharacterController has been blocked. // This is treated like a ceiling collision - stop further jumping here. jumping.holdingJumpButton = false; } } // We were grounded but just loosed grounding if (grounded && !IsGroundedTest()) { grounded = false; // Apply inertia from platform if (movingPlatform.enabled && (movingPlatform.movementTransfer == MovementTransferOnJump.InitTransfer || movingPlatform.movementTransfer == MovementTransferOnJump.PermaTransfer) ) { movement.frameVelocity = movingPlatform.platformVelocity; movement.velocity += movingPlatform.platformVelocity; } SendMessage("OnFall",SendMessageOptions.DontRequireReceiver); // We pushed the character down to ensure it would stay on the ground if there was any. // But there wasn't so now we cancel the downwards offset to make the fall smoother. tr.position += pushDownOffset * Vector3.up; }}