CS/INFO 4152: Advanced Topics in Computer Game Development

Project Requirements

We have several requirements for the game you will be making in CS/INFO 4152. The primary purpose of these requirements are intended to ensure that you are growing as a game developer, and that your are not just making another CS/INFO 3152-level game. For some of you, your CS/INFO 4152 project will determine whether you are able to get a job in the industry, and so you want to make this project "count".


Your game should target a mobile device (smartphone or tablet).

Why: Mobile games are the most popular and accessible market right now, and therefore they are a major focus of this course. Almost all of the lectures will involve these types of games. When we allowed any sort of game development in this class, the quality of games was extremely uneven. Since focusing on mobile development, the quality of CS/INFO 4152 games has risen dramatically.

Acceptable mobile devices for this class are iOS devices (iPhone, iPad, iPod Touch) or the Android (smartphone or tablet). If you want to develop for Windows Phone or Surface, please talk to us first; we do want you making another PC game that just happens to work on a mobile device. We want this project to be substantially different than CS/INFO 3152.

We cannot provide you with hardware for these platforms. If you wish to work on a particular mobile device, we suggest that your group get together and purchase one (in lieu of the cost of a textbook). The campus store sells a Galaxy Tab 4 for $200. For the same price they also sell an iPod touch. If you split the cost among your group, this is cheaper than most textbooks (and there is no textbook for this course).

Exceptions: Students who wish to create a 3D PC game are exempt from this requirement. However, 3D games have much greater requirements, both in terms of programming ability (see below) and artist requirements. If you want to make a 2D game, mobile is the only way to go.


Your game must use our custom engine.

Why: For years we let students use whatever engine they wanted for this course. It was a support nightmare. In addition, we had to make sure to break people up into Android-only groups, and iOS-only groups, which made team formation difficult. We desperately needed a cross-platform solution for this course. We also needed one in which it was relatively inexpensive to deploy to a mobile device (so not Unity). Our research turned up three viable options: LibGDX, Marmalade, and Cocos2D-X.

While many students like LibGDX, garbage collection and memory issues make it very difficult to design high performance mobile games in Java. It is clear that we needed a C++ solution. While Marmalade is good, the student licensing does not allow you to enter festivals or commercialize your game (plus, our experience with the middleware turned up a lot of bugs). Therefore, Cocos2D-X was clearly the best choice.

We used Cocos2D-X for the first time last year. While it worked, there were a lot of growing pains because of bad design decisions in the Cocos engine. Therefore, we have made our own changes to the engine to this year to make it easier to use.

Exceptions: If you are having a lot of problems with our own engine on Android, you may use Cocos2D-X directly. Use version 3.10 and do not upgrade again all semester long. However, if you are targeting iOS, you will really regret it if you do not use our engine (particularly with sound). Keep in mind that our sample code will all be in our custom engine.

The only other exception is if you are working on a PC game. Then you are expected to design your own engine (see below).


If you develop a 3D PC game, your team must consist of a joint project with CS 5625.

Why: In the past, we have had many students work on a 3D game only to end the semester with a technical prototype that had very little gameplay. Sometimes this is because the students tried to implement their rendering and physics engines from scratch. Other times they used an existing engine, but spent all semester trying to figure out how to get it working.

The only times in which students have been successful with their own game engines is in a separate course: CS 5625. But in that course, the students are only expected to make the engine; the game they make is irrelevant. Indeed, it seems like making a 3D game is really two classes: one for the engine and one for the game.

As CS 5625 is held the same semester as this course, the professor of the course has agreed to entertain "joint projects". A joint project is one where a significant number of the programmers are enrolled in both classes. Those team members will get credit in both classes for their work on the game. They are also expected to do twice the work. If you want to be on such a team, you must obtain permission from us and the CS 5625 instructor ahead of time.

Exceptions: None. If you cannot satisfy this requirement, you should work on a mobile device.


Your game must be feasible in a semester with each person contributing 10 hours each week.

Why: The purpose of this course is to have a completed game by the end of the semester, not p arts of a game or game technology. As usual, this means you should be careful with proposing RPGs or real-time-strategy games (though they are possible if you keep your scope limited). More importantly, this is why we have significant restrictions on 3D games. Even producing the art for a 3D game will eat up your semester.

Exceptions: There are no exceptions to the feasibility requirement. If we are worried that you cannot implement your proposal in a semester, we will challenge you for evidence that it is possible, or reject your proposal outright.


Your game must be original, and it must not be directly based upon previous work.

Why: This is a course about designing games, so if you come in with a game that's already designed or steal someone else's, something is wrong. Hopefully you will be excited to come up with new ideas and this won't be an issue.

Exceptions: There are no exceptions. However, this requirement refers to your game as a whole and your game's design; It is still okay for you to borrow code/art/sound/whatever from previous things you have done or even from labs/demos or anything anyone else has done (within the limits of legality) as long as your game itself is original, not a complete rip-off, and contains a sufficient amount of work from each group member.


Your game must be fun to play and contain a reasonable amount of content.

Why: Despite how subjective the word "fun" is, this is the entire point of making a game, so at the very least you should be able to enjoy it and have a sense of why others might enjoy it. Also, a game that is not finished tends not to be fun, so if your game ends up being incomplete, the parts you did complete had better be good.

Exceptions: Nope. This is an expectation we have of your game, even if we cannot technically require such an intangible thing.


Your game should be designed for public distribution.

Why: While games are posted on the GDIAC site, you should get experience in serious self-promotion of your game; that is the only way that anyone will ever play your game. If your game is a mobile game, this means getting your App on to either the iTunes or Android App Store.

Exceptions: You do not actually have to publish the game to that venue at the end of the semester, should you decide to "chicken" out. However, actual distribution is greatly encouraged, particularly if you are looking for a job in the industry.


Your game must not run slower than 60 frames per second.

Why: If your game runs slower than this on whatever computer you are using, you are probably doing something wrong.

Exceptions: 60 FPS is more of a goal for you than a hard requirement, but if it often drops below 55 or so and you are not sure how to fix it, then you should ask us and we'll give advice on how to speed up your game.


You must pass at least one of your other courses.

Why: Because we do not want other professors on Campus to hate this class. Well, no more than already do.


Those are the main requirements. Your grade will be affected if you fail to meet any of them without permission to do otherwise. If you have any questions or concerns, please contact the course staff.