TETRIS PROJECT SOFTWARE PROPOSAL CLASS: INSTRUCTOR: TERM: DATE: AUTHORS: CECS 491 DR. ALVARO MONGE FALL 2010 SEPTEMBER 5TH, 2010 DAMON CHASTAIN MATTHEW URTNOWSKI Tetris Project: Software Proposal Chastain, Urtnowski TABLE OF CONTENTS Project Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Interest in Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Goals of Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Scope of Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6 Assumptions of Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Challenges of Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Use of Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Comparison with Similar Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Available Research Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Tetris Project: Software Proposal Chastain, Urtnowski PROJECT ABSTRACT The objective of the project is to build a working, three-dimensional, Tetris game that can be played free of bugs with alterations to the classic game to make it more user-friendly, fun, and challenging. The game is meant to be open source and will be created under GNU General Public License v3 guidelines. The game will be playable as a single player game and meant to act as an enhanced version of the classic. Players will be able to enjoy various game modes allowing them to play the classic Tetris or new modes that put a new “spin” on the classic game. The game play changes for the new modes may include items that help or harm the player, importable music selection, different block shapes, a selection of skins, a marathon mode and timetrial mode. 3 Tetris Project: Software Proposal Chastain, Urtnowski INTEREST IN PROJECT BY DAMON CHASTAIN I have dedicated the summer to game programming and advancing in my career as a game programmer. My ultimate goal out of college is to acquire a job in game programming with a game programming company; however, it is nearly impossible as each entry-level job requires 2 years of experience. The companies understand that this is a Catch-22 in that you need 2 years’ experience to receive 2-years’ experience but they stick to it regardless. The only way to get experience is to create projects on your own spare time for resume purposes. Over the summer I went through the very lengthy process of creating a simple board game, Sudoku. Through trial and error I have been inspired me to take on a larger project and have decided that Tetris would be the next step given the 15 weeks that are available. With that said, I have 3 different game programming textbooks as well as a mentor, Arthur Gittleman, who could guide my group during the project as it is developed. This will be created using C# and XNA Game Studios, which enables amateur programmers to produce quality games without the support of an entire staff of dedicated employees. Having a fully-functioning video game of this caliber will seriously give me an edge over the thousands of other aspiring game programmers. 4 Tetris Project: Software Proposal Chastain, Urtnowski GOALS OF PROJECT The purpose of this project is to gain development experience on a large scale project from start to finish. In addition, creating an entire game in 3D will help push the group away from the common fear of stepping out of the comfortable 2D setting that one would first learn to program in. This project will present us with the greatest design, development, and testing challenges of our academic career. We will learn first-hand the problems that can arise when creating an XNA game. At the end of the semester we will have a completed project that can be demoed and proudly listed on our individual resumes. This will be our attempt to step away from the dominant use of console applications and really focus in on something that's aesthetically pleasing to see and play. This project is also meant to enhance the group's understanding of 3D-modeling. We will need to learn to manually build each item in our game by plotting vector, and point, coordinates and layering these coordinates with specific textures. If time permits, another goal of the project is to find, or create, the best possible lighting for our “world” that would maximize the user's gaming experience. And finally, sound will play a major role in the production of the game. The group will need to learn to blend sounds to match the needs of the game or level. Sound effects, blending with music, blending with more sound effects could sound extremely cluttered if done incorrectly and the group must learn to control such conflicts and deal with them accordingly. 5 Tetris Project: Software Proposal Chastain, Urtnowski Scope of Project The program will be written in the C# programming language as a stand alone application. C# is a language that is gain popularity and “is intended to be a simple, modern, general-purpose, object-oriented programming language”.1 The program will also make use of new technologies such as the Microsoft XNA Framework. XNA is a toolset that was developed to provide an environment for game developers to focus primarily on “high-level” game development and less on “low-level” process development. Requirement specifications and expectations will not be collected from a customer and instead will come from the developers themselves. It will be the responsibility of the developers to make smart design, development, and game play choices. The design and features of the game need to be finalized early and remain consistent throughout the project to ensure the development challenges of the game meets the expectations of the course. We will be responsible for development at the an application and user interface levels. A working and stable game loop will need to be developed for the Tetris game play. This game loop will need to be modified to meet the needs of the different Tetris modes of play. User settings and preferences will need to be preserved when the game is opened and closed. The game will need extensive testing and debugging to ensure the game is playable, enjoyable, and free of distractions brought on by bugs. The interface will use both 2D and 3D aspects of the XNA framework. The gameplay of the actually Tetris blocks as well as the “world” they exist in will be 3D. 1 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf 6 Tetris Project: Software Proposal Chastain, Urtnowski The user interface display, including menus, buttons, score, and other notifications will be in 2D. The design, layout, audio, graphic textures, and flow of the interface will all have to be developed. If the game is completed ahead of schedule it will undergo additional development cycles to add new features. Some of these new additions may include more game modes, new game play features, graphical or interface improvements, or a multiplayer mode. 7 Tetris Project: Software Proposal Chastain, Urtnowski Assumptions of Project Before beginning this project we must first assume that all members of the group are serious about the class, have some experience with C# and XNA, and can put in at least nine hours a week on the project. We also must assume that all group members will make a conscious effort to keep in touch with other members via email or other means, so everyone is a where of the group’s progress. Currently Microsoft Express Studio C# 2008 is the newest version of any integrated development environment designed to support XNA. Therefore we can expect that this will be the program we use to develop our game. The current version of XNA is 3.1, so that is what we will use. XNA version 4.0 is expected to come out before the end of the year, but due to the dramatic expected difference it will have from XNA 3.1 we will not change development to version 4.0 when it is released. Switching to and learning the new version 4.0 framework may present too much of a challenge given the length of the course. We can also assume that all of the research materials and tutorials that are currently available on the internet will continue to be available throughout the course. The current XNA game development community has created at board variety of tutorials and blog entries which cover topics and problems we will likely encounter as our project progresses. Relying on these research materials and examples as guidelines is critical to keeping the progress of the project moving. 8 Tetris Project: Software Proposal Chastain, Urtnowski Challenges of Project With any project promoting teamwork and open communication between members is always a challenge. It would be helpful for group member to first get to know each other outside the project, so they can assess each others strengths, weaknesses, and the best way to create a work environment that can survive conflicting view points. Another challenge presented is in using Google Code to house our project. This will be our first time using a revision software and it will take time to break-in the new method of saving our work. This project is planned to be one of the largest and most complicated ones we have ever worked on. Staying on schedule and quickly overcoming any roadblocks will be critical to being successful. Spending time first doing research on similar project and reading related XNA tutorials will pay dividends down the road during planning and development. Learning from others mistakes, instead of “reinventing the wheel”, is the best approach. Most of our academic career is focused on application development and less on graphics and interface design. Learning how to render graphics in 3D, use 2D sprite effects, and adding audio to a program are all fairly new subject to us. These are the topics least familiar with, so spending a little extra time researching them is important. Lighting and sound will also, both, present the group with several new and interesting challenges. We must research and learn which form of lighting would best suit our needs and how to implement that lighting. Sound in the project will need to be controlled and monitored regularly to keep the game from being too loud or too quiet. 9 Tetris Project: Software Proposal Chastain, Urtnowski USE OF PROJECT Our project is supposed to be a game, so at face value it will be used for fun. The game of Tetris was first created in 1984 and is one of the most well known games throughout the world and is still being play and improved upon even today, giving it a seemly ageless property. “The game (or one of its many variants) is available for nearly every video game console and computer operating system”. 2 In 2007, IGN Entertainment ranked the classic Tetris second in the Top 100 Games of All Time. 3 As an open source project the game’s source code will also be used by other developers as reference material for there own projects. We have long used and respected other open source XNA projects and we hope our project will give back to the development community and inspire other developers. Other developers may also expand on our project after we leave the project at the end of the semester for there own purposes. The main purpose and use of this project will be to post on our resumes. Our future employees must enjoy the game and the time put into it to consider us for employment. With the use of the project in mind, we aim to create the most enjoyable Tetris we can make. 2 3 http://en.wikipedia.org/wiki/Tetris http://top100.ign.com/2007/ign_top_game_2.html 1 0 Tetris Project: Software Proposal Chastain, Urtnowski COMPARISON WITH SIMILAR PROJECTS Tetris currently holds the Guinness world records for “Most Ported Video Game” and “Game with the Most Official and Unofficial Variants”, so there is no shortage of other Tetris games for us to examine.4 The 1989 Nintendo Gameboy version is perhaps what people think of when talking about classic Tetris. The comparisons will be used heavily when considering the sounds that are to be used or reproduced. Other Tetris games could be referenced when determining the speed of the game. Basically, any XNA program could be referenced to see how the game loop is manipulated and to see how memory is stored and allocated. Other XNA games with our components may be: -Druid -MechCommander 2 -Other open source Tetris implementations -etc. (countless XNA games from a group of our online peers) 4 http://gamers.guinnessworldrecords.com/records/multi_format.aspx 1 1 Tetris Project: Software Proposal Chastain, Urtnowski AVAILABLE RESEARCH RESOURCES Microsoft has been encouraging developers to use the XNA Framework since its creation and has created large libraries online of reference material and tutorials. Some of the more prominent Microsoft research materials include the .Net Framework 1.1 Class Library 5, XNA Framework Class Library 6, XNA Game Studio 3.1 explanation 7, and XNA tutorials for beginner topics. 8 There is also a seemingly endless supply of other reference material and examples on individual sites all over the internet. The XNA Creators Club Online is an amazing site for connecting with other XNA developers and demoing other project.9 Free access to the XNA Creators Club is provided by the MSDN Academic Alliance in which our school participates.10 Also typing in any development questions into an internet search engine usually returns favorable results which contains answers or discussions relating to the question. 5 6 7 8 9 10 http://msdn.microsoft.com/en-us/library/d11h6832(v=VS.71).aspx http://msdn.microsoft.com/en-us/library/bb203940.aspx http://msdn.microsoft.com/en-us/library/bb200104(v=XNAGameStudio.31).aspx http://msdn.microsoft.com/en-us/library/bb203897(v=XNAGameStudio.31).aspx http://creators.xna.com/en-US/ http://msdn07.e-academy.com/elms/Storefront/Home.aspx?campus=csulb_cecs 1 2