how i (finally) made my first video game

53
How I (finally) Made My First Video Game By Chris Sanyk

Upload: hal

Post on 23-Feb-2016

36 views

Category:

Documents


0 download

DESCRIPTION

How I (finally) Made My First Video Game. By Chris Sanyk. How I (finally) Made My First Video Game. By Chris Sanyk. About Me. First exposure to computers c. 1980 Atari 2600 , Commodore 64 , Apple ][ Game concepts on paper at age 6 10 + years in various IT roles. Programmers…. ( Me ). - PowerPoint PPT Presentation

TRANSCRIPT

How I (finally) Made My First Video Game

How I (finally) Made My First Video GameBy Chris Sanyk

Hi, my name is Chris Sanyk. Ill be speaking today on How I (FINALLY) Made My First Videogame, a tale of epic procrastination and a dream that would not die.1How I (finally) Made My First Video GameBy Chris Sanyk

Or, as it might more accurately be titled, How I (FINALLY) Made^H^H^H^H am making My First Videogame.

Well, its in progress still. These things take time. But it is playable, and there will be a demo after the talk where you can play what Ive built so far. 2About MeFirst exposure to computers c.1980Atari 2600, Commodore 64, Apple ][Game concepts on paper at age 610+ years in various IT roles

Most of my IT learning has been self-directed. Ive worked in desktop publishing and graphic design, desktop support, server administration, and some modest development.3

Programmers

Great(Me)f(x) = Greatness++0Im not a great programmer or anything. By that, I mean in comparison to truly great programmers like Carmack, Knuth, and Torvalds. I say this not to discredit myself, or out of a false humility, but because I want everyone here to understand that they too have the capability to do what Im about to show you. I run into people all the time who dont give themselves enough credit, who compare themselves to people who are up here talking and who think that they could never do it themselves. I am not any different from the least of you. The only difference between me and you is that I have done something, and now Im here. But you can also do something, too. You all can.4BackstoryChristmas 1981

For me, it all started in Christmas 1980 or 81, when my parents got us an Atari 2600. I was in first grade. I had a unique privilege of growing up with home videogame consoles. This is a defining characteristic of the gamers of my generation. I was born around the time the first home video games were introduced to the market, and as I grew up, the tech that I played on seemed to develop just as I was developing, matured at the rate I matured. This made video games very personal and I felt connected to them intimately.

I was hooked immediately.6(Bad?) Influences

I got to visit the arcade at least four times a year, after each report card. Chuck E. Cheeses gave out tokens for good grades. The one we had in our town was awesome, what to me now seems like a museum of classic games. Sometimes I might also get to go for a kids birthday party.7(Bad?) Influences

Although I enjoyed the more sophisticated games that came later, Ive always been struck by how fun the arcade games of the early 80s were and still are. In their infancy, there was a tremendous amount of creativity, spurred both by their newness and the technical constraints of the time. Video games were a NEW THING. They werent trying to be movies or replace reality. They were their own thing, something brand new and unprecedented. There was no expectation about what they could or should be, either creatively or economically. This afforded developers tremendous freedom. The only constraint was the technical limitations of the time, which were severe but this only served to force programmers to make games simple, minimalist experiences that maximized fun. Thats something that has always stuck with me.8

(Bad?) Influences

When I wasnt playing video games or doing school work, I was usually reading. Very often, you could find me immersed in Choose Your Own Adventure books and D&D rule books. I spent a lot of time thinking about the rules and how they worked -- or more often how they didnt quite work -- and how I could fix, extend and improve them.

Videogames fueled my childhood imagination. It wasnt long at all before I started coming up with my own ideas for games They should make. I drew up my ideas and my mom would write down my descriptions of the gameplay, the objective, how the controls worked, scoring rules, everything youd need to have a good understanding of the concept.

9(Bad?) Influences

I also spent a lot of time building things with Lego bricks. I never built the pictures on the box or followed the instructions, I just took the pieces and made up my own things to build with them. Usually space ships or other exotic vehicles, ready for adventure in hostile environments.10Sadly, most of those original conceptual docs no longer survive

if they had, this slide would have been a really awesome collage :(Early Paper Designs

My mom kept this stuff in the attic for many years, in boxes with my school assignments, awards, and other stuff. But when I went back to look for them, they had been thrown away during a clean-out. A few years ago my mom got into scrapbooking and went through everything, and didnt think most of this was worth keeping.11BunnyBots, c.1982

This drawing, produced when I was 7 or 8, is the only surviving example of my early work.12I have no idea what architects really did with this

I used mine to make video games.A lot of my conceptual drawings (rest their souls) were done with the aid of an architectural template which looked exactly like this one. Many of them were also done freehand.13Pixel Dreams

Video games were a passion for me all through my childhood years. I played on every system I could get my hands on: Atari 2600, 5200, 7800, Colecovision, Intellivision, NES, SNES, N64. I enjoyed all styles of games and continually thought of ways that I would improve existing games if I could.

Oddly, none of my close friends were really into video games. It was mostly a solitary pursuit. There were a few kids who I would sometimes play with, but especially in the later years, most of my gaming was done in isolation or with my brother.

As I grew up, I played a lot of Atari and Nintendo. Each year brought new games, new innovations. I was impressed and surprised by the innovations. My own ideas kept growing as well, often predicting innovations that came out in the next year or so. By middle school, it had occurred to me that this was what I wanted to be my career designing games.

At the time, I thought that the only thing to making games was programming. Design, art, sound effects -- to me it was all programming. I had little idea of how games were actually produced, and I had little idea how to program, but I knew I could figure it out if I could only find someone to teach me. There were some opportunities to learn programming in school, but not enough. I learned some fundamental programming concepts in Logo, BASIC, and Pascal. I heard about Assembly and C.

I figured in college Id find the environment Id be able to learn in.

14College

By the time I got there, though, I found that I was behind. It was 1993, yet the high school I went to still was teaching computer science on Apple ][e systems (Apple ][ was first released in 1977, when I was two years old. Id never used an IBM compatible computer, or a with a hard drive, an operating system and installed applications, or a desktop environment. In the CS department at college, there were international students who seemed like the had ANSI C spec memorized, and were way ahead of me in terms of just about everything. It was hard for me to even imagine being able to do some of the things they seemed to be doing.151993

One of the things that was strongly impressed upon me during my formative adolescent years was that who you are was important, and that artists shouldnt sell out.161990s Game Industry maturing

=

At the same time, the videogame industry was changing. Games were becoming larger projects. Large teams worked on them, not singular artist-programmers. This meant a loss of individual control and vision, no matter how you cut it. Budgets were growing larger, which meant risk was higher, which meant publishers were more risk averse, wouldnt take chances on something unproven. Games increasingly relied on licensed intellectual property and the sequels to ensure commercial success. I started hearing about crunch time and death marches, teams working 100+ hour weeks, and not even owning the rights to what they produced. All the innovation and uniqueness about games that I had found so inspiring was being replaced by corporatism, sequel-itis, and ideas borrowed from action movies and comic books. Everything was going 3D, which meant complex gameplay, and trying to tell stories. I thought reality and storytelling were exciting directions for games to explore, but they were in danger of losing sight of the simple style of play that I first fell in love with.

More than anything, I dreaded getting into the industry and learning to hate games, working on projects that I wasnt personally invested in, and losing the sense of wonder.17FizzleAs a result, I questioned whether the game industry had a future for me that I still wanted.I put programming asidegraduatedthought about grad schoolPlayed around with computers instead, until I ended up with a career in IT.

Even though it seemed like I had no hope, and had basically given up, I still couldnt stop thinking about it. I still wanted to make the games that were in my head.19

But I still had no idea how to go about actually doing it. Most of my concepts and design stayed in my head, or ended up as margin doodles in boring classes and meetings.20~2005: Independent Devs

In the 90s and 00s, I continued to play old games, often on emulators. I was aware that a lot of people were into retro gaming. I played newer games also, and enjoyed the occasional title that genuinely advanced the state of the art. Most games were just iterative refinements on some well-established commercially successful genres.

Around 2005, I became aware of a movement of Independent Game Developers, doing games the old way: individuals or small teams, small games, a focus on fun and play, or just doing something unique and innovative. They didnt distribute through publishers, they did it directly through their own web site. A few of them even made money.

I realized that if Id just stuck with my vision and believed in it, I could be doing the same thing.21The Dream Lives2006: IT took me back into software development.

2007: Tried, failed.

2010: Tried againMy First Game30 years in the makingBetter late than never

Duke Nukem Forever was announced in 1997 and still hasnt come out yet. My first game was conceived in 1981, and still hasnt come out yet. Duke is an amateur crastinator. I am a professional crastinator. Wholl be the first to ship?24Boobie Teeth!

Boobie Teeth was the name I gave to a ravenous fish, who had teeth like a steel bear trap.

(Back then, I thought bear traps were called boobie traps.)

The title has nothing to do with actual boobies. (Sorry.)

25Concept

Rules are simple: Avoid getting eaten by the larger fish while eating smaller fish to grow large enough to eat bigger fish.When you eat all the edible fish on a level, you advance to the next level.Thats really about it.26

[Current version video here]28ToolsGame MakersfxrPaint.NETWindows Live Movie Maker29Game Maker

Game Maker is a great tool for rapidly producing games. Its also a great environment to learn in. You dont need to have a background in programming in order to pick it up. You will pick up a lot of programming concepts as you delve into the environment. The downside of Game Maker is that it does NOT teach you good programming habits. It doesnt enforce any particular way of doing things, and is pretty forgiving of bad practices. This makes it more accessible for newbie programmers and non-programmers. But if you dont learn the craft of good program design somewhere along the line, youll eventually build yourself a monstrosity because you wont know any better. The key is to recognize when youre struggling, figure out why, and dont be afraid to throw out work and start over again with a fresh approach. Once you learn a better way of doing something, youll be surprised at how much faster you are able to build it.30Game MakerProsConsCheap (Free/$25).Quick to build simple things.Easy learning curve.Its capabilities grow with you.Developer community is relatively strong.Slow script interpretation.Object-based rather than Object-oriented.All variables are public.Weak on debugging.Weird data typing.sfxr

Sfxr is a great sound generator utility originally authored by DrPetter. It is good for old-school 8-bit sound chip, can save/edit a sound, and export to .wav. It is free and well known to indie game developers.32Paint.NET

Game Maker has a built in sprite editor which is good for some things. For some work I use Paint.NET, a very good free light photoshop app for Windows. There are other graphics apps out there, like GIMP, that are worth looking at too.33ProcessHow I happen to do what I doMy Development ProcessVague list of ideasPick oneBuild itTest, TweakFreezeDocumentBuildReleaseI try to work in uninterrupted sessions, and leave the project in a ready, playable state with whatever I was working on finished. Finished means finished for now I like to keep things as simple as I can, but revisit when the time is right.35What I learnedStuff I learnedYou are ready. You are not ready.Now is the best time.Take small steps, make many of them, start right away.Stuff I learnedProgramming is harder and easier than I thought.The basics of computer programming is very easy. Variables, loops, boolean conditional, and concepts like object oriented programming are not terribly difficult to grasp, and transfer readily to most any language you may need to work with. Learning a framework just takes time. All you need to do is immerse yourself, read the documentation until it makes sense, and try something small, get it to work, and build up from it. To do that successfully you just need a disciplined mind and careful work habits, which anyone can develop.

On the other hand, figuring out puzzles that one encounters while programming can be very difficult. Misunderstanding something and not realizing it can leave you stuck. There are often subtleties which you wont get the first dozen or more times you encounter them. To solve harder problems, you need to have the right tools. Debugging is not so hard when they are available, but you dont always have good debugging tools or good documentation. Thats when you either have to make them yourself, or look outside yourself to a supportive community. Theyre usually out there, and you just need to know how to ask useful questions in order to get help.38Making games is more than programming

Making games is about design, vision. It is an art. It requires a diverse set of technical skills, as well as an understanding of human psychology, mathematics, logic, storytelling. It requires planning, good writing skills, meticulous attention to details, organization, and project management skills. To be a good solo developer, you really need to be strong in many areas.39Unsure how to proceed?The best thing to do if youre not confident about how to proceed is to DO ANYTHING and watch.Do the smallest/simplest part of what you think you need to do that might possibly work. Run it.Learn.Iterate.This approach works for programming, but also in other aspects of life.40Heed your calling.Do what you were meant to do.Follow your dreams. If you cant get something out of your head, you owe it to yourself to pursue it. 41Be a development fiendRead like a fiend.Code like a fiend.Test like a fiend.Read like a fiend. Read everything you can. This will make you a better person, which in turn will make you a better designer. But especially, read the language specification. Read the help file. Read the community forums. Read books on how to use your tools.Code like a fiend. Code as much as you can. The more you do it, the better you get at it.Test like a fiend. Testing is crucial to a successful implementation. Game testing is mostly usability and user acceptance. But you also need to test to make sure the code works, and that it works the way you think it works. This is not always obvious. Sometimes code appears to work but is subtly wrong. Sometimes this yields very interesting discoveries. More often it will result in lengthy periods of confusion and frustration, after which you attain some enlightenment.

Be passionate. Work hard. Enjoy what you choose to work on. And dive into it.42Document Everything

Keep meticulous notes.Document everything.Every idea you haveEvery question or problemEvery thing you need to doWhat you were thinking, why you coded something that way. Make your code as self-explaining as possible.43Make mistakes!

Make mistakes!Make them early.Catch them early.Learn from them.Let them surprise you delightfully.

44Game craft is the art of fakery

If you cant do it, but you can fake it, fake it.You probably dont really need to do it.Just about everything in a videogame is fake anyway.So much in games is just a hollow shell.

45Refactor at every opportunity!

Refactor at every opportunity.Especially early. The longer you delay in refactoring the code, the more work it will be later.The more you refactor:The more refined your code will be.The better you will get at coding.Your project will:Perform betterHave fewer bugsBe more maintainable.

46Learn to ask for help

Learn to ask for helpOnlineFriendsColleagues/expertsAsk the right way (be specific, provide as much info as possible, actually TRY a few things first, ask politely, dont ask someone to do it for you, etc.)47Talk to People

Talk to people. Stuff happens when you do that.Job interviewGirl at party: Youre interesting.This talk.Book review.Things lead to more things.When things start happening, they will start happening quickly. It may take a long time for things to start happening. Things may not happen. Its up to you to make it happen.

48Money so what?Stop worrying about whether and how it can make you money.Do something cool first, figure out how to monetize it later.One of the reasons I gave up on being a game developer long ago was I couldnt figure out how to make money at it doing it independently. What Im doing now, Im not doing for money. If money comes to me from it, somehow, thats great, but its not why Im doing it now. Ill worry about it later, if ever. The first thing is not to latch onto how your idea is so great that itll make you a millionaire; its to figure out how to do something cool and fun. Im not saying up and quit your day job in order to pursue your dreams. Everyone needs to have a means of support, somehow, and for most of us that means work. But what I am saying is, dont let a dream of getting rich or being successful by doing what you love prevent you from doing what you love, simply because you dont know how to make it make money for you. Get good first, then figure out how to make money. I have a feeling that this will often take care of itself for you, as you gain in ability you will develop a reputation and fortune will largely seek you. At that point its just a matter of being able to recognize opportunity, and being astute about pitfalls.49Do things that you would happily do for free.

Try as much as possible only to do things that you would happily do for free. Youll likely end up doing them for free anyway, so you might as well be happy about it. If you do get paid, itll be sweet. Imagine if you were this guy, and the only reason you did this to yourself was because someone was paying you, or for attention. If youre going to commit your life to something this much, make sure you love it.50Try to do everything at least once.

Try to do it all, at least once. Find out what youre really good at. Gain appreciation for the skills of others. By learning the tools and techniques of all disciplines, you learn how to talk to other members of your future projects.51Your obsession is you.

If you have something in your life that you are this passionate about, no matter what it is, it affects your identity and shapes your life. If you devote yourself to your passions, you will become your obsession. If your significant other breaks up with you because you spend all your time on your project, she wasnt your significant other someone who understands your passions and why they are important to you will understand you. You still need to be sure to pay attention to people in your [email protected]://csanyk.com/rants/releasesHands-on demo after this talkPlaytesting feedback desiredLooking for: designers, programmers, artists, sound/music people to collaborate with on this or other projects.