Current MS Students/Neal Patel

From CSWiki

Jump to: navigation, search

Game Engine Analyzer

Contents

[edit] What I am planning to accomplish

My goal for my masters is to form a thesis that analyzes game engine functions. I intend to build one simple game simulation in each of the following game genres (FPS, RPG, and a Sport game) and test them using a variety of game engines. This investigation will record and relay quality information of certain attributes, i.e. rendering, networking, physics, etc. in game engines. The goal is to determine which engines provide better functionality to a particular type of game. Therefore at the end of my research the thesis will report how certain game engines support gaming features such as physics, audio, networking, 2d GUI, etc that were tested by my simulations as well as independent game developers who have other simulations for testing.

Some important questions to answer is

  • Why should we as independent game developers choose this game engine over a huge list of others?
  • What type of game is better suited with a game engine that provides better physics routines but lacks any network functions or has simple networking and audio functions but has poor graphics quality and rendering speed.
How many game engines do you expect to review? To do this well sounds like a great deal of work. Simply listing properties of a large number of game engines seems like a lot of work. It might make more sense to develop an interactive web site in which game engine properties were paired against game engines and users could add their rankings. But that wouldn't involve you doing any direct work with game engines unless you seeded the results initially. Look, for example, at CMSMatrix, wikimatrix, and Comparison of wiki software. The first two don't allow user input. None of them allow users to comment on the quality of features.

I plan on reviewing all open source engines that run on Linux and Windows platforms and are written in C/C++ and or Python (since I want to learn & become proficient in Python) supporting OpenGL. If time becomes an issue a narrow list of suggested engines that fit these criteria can be adjusted. I do plan on making a interactive website for users so they can input their rankings based on their testing but initially the properties would be listed by me. The intention would be that independent game developers can have a reference to choose from game engines that fit their particular need. Also they can add there input stating there experience using a certain game engine, reporting how the engine worked on their simulation.

What might make your project more interesting is to separate out the interface between your games and the engines they run on. In other words, define something like a Java interface that specified the methods that the engine would have to implement to run the game. Then for each engine, you would code that engine's version of the interface methods. You may find yourself doing that anyway.

Then you could compare the various interface implementations of the various engines. The downside of doing that is that you wouldn't be taking advantage of the special features of the different engines. You would be coding the interface so that all engines could implement them.

But it might be interesting to try to something along those lines.

Reply: That does seem like a good way to go about doing the project. I believe I will have to do that to test the simulations to see results of features given by a particular game engine. What I initially planned on doing was modifying the game code to run on top of the game engine code. Thus I can work with the game engines just as they have been implemented.

[edit] Why this is academically interesting

[edit] Intended audience

Professionals or students working in game development, simulation, scientific visualization, or virtual worlds.

[edit] Why this is MS-level work

This thesis requires a substantial amount of research and knowledge of game engines. To do this there will be a great deal of software testing and analysis of game engines which will take a lot of work. MS-level work takes a significant amount of time and work which is what my thesis will take.

[edit] Previous work

* CS590

Do to the fact my thesis will focus primarily on software testing I have read articles that estimate the cost of time in order to reduce the amount of time on testing especially in game testing.

T.J. Cheatham, J.P. Yoo, and N.J. Wahl. Software testing: a machine learning experiment. In Proceedings of the 23rd Annual Conference on Computer Science, 1995.

G. Xiao, F. Southey, R. Holte, and D. Wilkinson. Software testing by active learning for commercial games. In Proceedings of the 20th National Conference on Artificial Intelligence, PA: AAAI Press, 2005. [1]

Moloney, J, Amor, R., Furness, J., and Moores, B. Design Critique Inside a Multi-Player Game Engine, Proceedings of the CIB W78 Conference on IT in Construction, Auckland, New Zealand. [2]

Olivier Montanuy, Unofficial Quake-C Specification, [/http://www.gamers.org/dEngine/quake/spec/quake-spec34/]

Miliano, V. (1999) Unrealty: Application of a 3D Game Engine to Enhance the Design, Visualization and Presentation of Commercial Real Estate. 5th International Conference on Virtual Systems and Multimedia, September 1-3, Dundee, Scotland, [3]

Lewis, M. & Jacobson, J. 2002. Game Engines in Research. Communications of the Association for Computing Machinery (CACM), NY: ACM 45(1). [4]

[edit] Anticipated challenge(s)

[edit] Challenges

Choosing how many game engines to analyze is a big challenge.

How to report the data will be another challenge where users can add their input from simulations they have done with there games. For instance how can you tell which game handled better on a particular game engine? Will there be a log of performance and handling related issues with particular games. How will you be able to tell which game handled collision detection, AI, physics, etc better?

Learning Python

[edit] Anticipated approach to each challenge

1) Game engines that are written in C/C++ and or python supporting OpenGL should narrow the list. They must also be open source since code for commercial game engines are not available.

2) Creating an interactive web site seems like a possible solution maybe a CMSMatrix. Once this data is recorded by me and other users then we could log our findings on the site. As this information is gathering the finding can serve as evidence of performance and handling issues which would be detailed in my thesis.

3) A language is a language. If you learn one language well transitioning to a new language is not as hard so they say.

[edit] What I bring to this work

[edit] My relevant background and experience (CS 590)

In my cs419ab project I designed and implemented a First Person Shooter Game

Check it out

Media:FPS.doc

Media:FPS.ppt

However this differs from any other course in that substantial research will be done on pariticular game engines. Before designing my undergraduate project research was done in the game development process. This study goes beyond development of games.

[edit] What I find interesting about this work

From this research I will learn game engines and game development process which I can present to potential employers. I will be also able to be involved with the game development community which helps me have a better understanding of the different internal level of games.

[edit] How this work goes beyond my experience and course work

Other projects were done based on implementing a certain type of game that has been done before in many courses. This intensive research goes beyond of reproducing or modifying an existing game to make it better. This research gathers information about game engines and relays this knowledge back the game developing community in order to produce wonderful and visually exciting games.

Personal tools