======The Reality of Making Games====== By [[/haas/home|Matthew Haas]]\\ Instructor\\ Computer & Info Science\\ Corning Community College\\ haas@corning-cc.edu =====Creating Games Requires===== ====A plan==== * A plan: what are you making? * is it feasible? * are you sure? Especially if you've never done it before. ====A particular set of skills==== * creativity * problem solving * troubleshooting * programming * reading / observing / comprehension * attention to detail * experimentation / research * abstraction - be able to dive deep into many levels of thought * writing - ability to express thoughts * math / numerical literacy - know how to manipulate numbers in a favorable way ====Follow-through==== * ability to focus and pay attention to minute details for long periods of time * ability to work on a large, multi-faceted, and complex problem without being able to necessarily see tangible results until it is much closer to completion * ability to experiment and dabble; there's no "recipe book" you can follow to make a game. You need to understand underlying concepts and know how to apply them in a particular situation ====Avoiding dead-end temptations==== * GameMaker * Unity * What development environment / system / game engine you're going to use * while many of these things are productively utilized by professional game developers, they ultimately require a knowledge of the underlying basics of logic - the process of instructions the computer is performing to accomplish the task at hand. * focusing on these gamedev tools without a fundamental underlying understanding of programming and problem solving will lead to dead ends, as you will be "boxed in" with respect to what you can do * you can have the finest, latest, and greatest jet, but if you don't know how to pilot it, you're not going to be able to do all that much with it. ====CREATING games is NOT the same as PLAYING games==== * whatever "fun" you experience playing games will NOT translate to creating games: * creating games can be frustrating * creating games will result in many failed attempts * creating games involves coming up with ideas * I daresay creating games is MORE fun than playing games, but it isn't possible until you disconnect from it needing to be as fun as playing games. * the more you want to create a game (at the cost of anything else), the less successful you will be. To become good at creating games, you need to focus on many things that don't seem game-like (programming, reading, writing, math, thinking) for an extended period of time before you are able to successfully undertake such an endeavor ====CREATING games IS possible==== * It just takes perseverance and effort. * In my Spring 2019 Computer Organization class, we learned aspects of how the underlying hardware of a system works. * This semester, I chose (well, I asked, the class enthusiastically agreed) to explore the 1980's Nintendo Entertainment System (NES), where the aim was to create games (ROMs) as a demonstration of concepts learned and efforts expended. * We weren't unsuccessful: * https://youtu.be/ZYIv1fFfWDM (BrainStorm) * https://youtu.be/5ZWjTgr4h78 (Asteroids) * There are other efforts underway as well: * https://www.youtube.com/playlist?list=PL172Xo7heu1adC57cUiyMBhsMh5wnc_eL * And in my Spring 2019 Systems Programming class, we also explored applying concepts through games (using SDL): * https://www.youtube.com/watch?v=gxB98OAwDHY ====HOW do I start?==== * established and refined reading, writing, thinking, mathematical skills * find an interest and gain further understanding of other fundamental concepts * physics: gravity, mechanics * economics: in-game currencies and economies * earth science: meteorology, environmental behaviors * geography: maps, map-making * writing: storytelling, narration * language: the more languages you know, the more tools you have for expression. You'll become better at communicating. * philosophy / logic * humanities * music * learn how to program * dabble, experiment, and explore with all these skills * writing games is a form of expression. The more fluent you are in the arts of expression, the better your game writing efforts will be. * while there are an increasing number of "Game Design" programs popping up at schools, please note: * competition is EXTREMELY high. EVERYONE is wanting to get into these programs. * high competition means you need to stand out from the crowd. The more capable you are in all these skills (especially the seemingly unrelated ones to gaming) the more valuable you will be. * competition in the game industry is even higher. There's SO MUCH SUPPLY, and very little demand. Game companies have no problem getting applicants. But there are far more people WANTING to make games than are actually hired making games. * professional game design jobs are abusing and grueling. 80+ hour work weeks, tight schedules, and burn-out is very high. Roll-over is not uncommon (and with the excessive supply, replacing a vacancy is practically effortless). * Perhaps consider an alternative/insurance plan? * My typical recommendation, for those who want a well-rounded, effective, and long-term foundational preparation where one CAN do game design (but can be qualified for many other jobs) is **Computer Science**. * CCC has a 2 year transfer degree in Computer Science. * https://www.corning-cc.edu/programs/computer-science-as * I like to call it "the fine art of thinking" * It is the ultimate umbrella degree, because everything else out there is basically "applied Computer Science". * at the rate technology and the world changes, do you want to be caught up in an endless, stressful cycle of continually needing to be retrained, or do you want to take control and be able to learn how to learn (on your own), and adapt to changing patterns? ====Want a taste?==== * Let us explore some basic concepts of problem solving: * Logic Puzzles are very useful in cultivating these abilities. A beneficial class activity I utilize is [[/haas/gaming/puzzles|letter division puzzles]]. I have prepared a worksheet. * And also programming: * https://turtleacademy.com/playground ====Questions?==== =====Resources===== * Want to play the NES ROMs on your own system? You can download them [[https://lab46.g7n.org/~wedge/content/NES_ROMs|here]] * [[http://lab46.g7n.org/~wedge/content/NES/brainstorm.html|Play BrainStorm]], by [[/journal/spring2019/relliot9/start|Rana Elliott]] () and [[/journal/spring2019/mkowulic/start|Mike Kowulich]] () * [[http://lab46.g7n.org/~wedge/content/NES/bossbreaker.html|Play BossBreaker]], by [[/journal/spring2019/jwilli57/start|"jimito" Williams]] () * [[http://lab46.g7n.org/~wedge/content/NES/portalkombat.html|Play PortalKombat]], by [[/journal/spring2019/sepp/start|Stephen Epp]] () * [[http://lab46.g7n.org/~wedge/content/NES/asteroids.html|Play Asteroids]], by [[/journal/spring2019/dgreen16/start|Dylan Green]] () and [[/journal/spring2019/wprice2/start|William Price]] () * Send them an e-mail with questions or compliment them on their efforts. * Want to play but cannot install an NES emulator on your computer? Try [[https://jsnes.org/]] (drag and drop ROM onto the squares) * Want more letter division puzzles? My growing collection can be found [[https://lab46.g7n.org/~wedge/content/ltrdiv/|here]] * very much a work in progress, reorganizations may happen over time * various categories of difficulty: * easy - basic level letter divisions * med - medium level letter divisions * hard - challenging letter divisions (requiring more indirection) * bases - letter divisions of all difficulties encoded in number bases OTHER than base 10 * superhard - puzzles I haven't figured out a solution to * todo.tmp - puzzles I have generated but haven't evaluated yet (some might not be solvable)