Ask Slashdot: Tools For Teaching High School Kids How To Make Games?
First time accepted submitter nzyank writes "The other day I bravely (foolishly?) volunteered to conduct a video game development workshop at my boys' HS. This in Smallsville, Vermont with an average graduating class size of about 20. The idea is to meet once a week and actually create a game, start to finish. It will be open to would-be programmers, designers, artists, etc. I worked on a bunch of AAA titles back in the '90s, but I'm pretty much out of touch nowadays and I'm trying to figure out the best approach. The requirements are that it has to be one of either Windows/XBox or Android, since those are the platforms that I am current on. It has to be relatively simple for the kids to get up and running quickly, and it needs to be as close to free as possible. Teaching them to use stuff like Blender, C#, C++, Java, XNA, OpenGL and the Android SDK is probably a bit much. I was thinking of something like the Torque Engine, but they want $1000 for an academic license, which is never going to happen. I simply don't know what's out there nowadays and could really use some suggestions."
For programmers best suggestion would be XNA and C# as it is really powerful while still being to program with, and you get support to all Windows, Xbox360 and Windows Phone 7. However, you noted that even XNA is probably a bit much.
However, MS Research also has come up with Kodu which is basically XNA and C# in even more suited package for kids. It's really easy to use and you can actually modify your game a lot. It's fully interface based, so there is no need for coding, but it is still fairly powerful and the best of all, you see
Unity is pretty much the best option. It is cross platform, easy to develop in, and has everything you need to get started fast. The documentation is excellent, the community is supportive and the entry-level version is free. Unity
Drinking habits can be dangerous. You can choke on the cloth and the nuns will wonder where their clothes are.
HTML 5 canvas + javascript runs everywhere that matters. Old basic games (cards, gorillas, donkey, snakes, etc) should be a good target.
Do you even lift?
These aren't the 'roids you're looking for.
Shouldn't they think first about how to program basic stuff and to iterate thru steps in a logical way....then start to create their first Read-Eval-Loops, to then create a smallish turn based game to then create some proper games!?!?
http://scratch.mit.edu/ might be too simple, although people have stretched the limitations of it more than I would have originally expected. Drag-and-drop logic blocks and a graphic/sprite-based canvas that reminds me of Hypercard makes me think this is at least worth some investigation.
Check out http://scratch.mit.edu/. It sure looks like kiddy stuff at first glance, but its awesomeness cannot be described, you have to try it yourself.
Since scratch takes care about all the nitty-gritty details, you can focus on actually *designing* good games, which is awfully hard.
This seems like a perfect match for Unity. It has a free version which does not have many restrictions and is reasonably easy to use.
http://unity3d.com/
Multi-platform, simple to use. It can use blender, 3ds max, etc, etc for objects. All of the scripting can be done in JS or C# using built in Mono.
Full networking support, good asset pipeline... and most importantly, free for the basic version that can deploy to the web or as mac or pc standalone clients, or xbox360.
Annual Education licenses are available for the Pro version @ $99, $200 for Android or iOS deployment support, $300 to deploy to anything. Perpetual licenses are $750... but unless you're making a very sophisticated project to deploy, you don't need anything beyond the basic version. In fact, you can create everything you want under the basic version, then migrate to pro for release if you really wanted to.
But you can't use something that must be licensed for them. These kids need to learn a skill they can go home and practice - if any of them are going to use the skills they learn from you, the tools required had better damn well be Free and Open to them.
I'm really liking Construct (http://www.scirra.com/construct2/) at the moment. It's an HTML5 game engine that's easy enough kids should be able to pick it up and it has the added bonus of being free for non-commercial use. If you want to see it's capabilities, I threw together a little game in around 5 hours of work to learn it's functionality and it turned out ok. You can view it here (http://jemjensen.com/caversrevenge/)
Well Blender for content creation is your best bet. Aside from being free it also has a game engine built into it, cutting out the export process. Also it has a simple "node" system for setting up game logic. A fair amount can be done with it. The downside is that the "node" setup is limited. I'm REALLY glossing it over. But I taught a gaming course using only Blender and was able to get the main concepts across. If your looking for a full engine with a polished pipeline between it and your DCC tools Unity is a great option. The basic version is free & can do Win/Mac builds, plus builds for online. Other build modules exist for both Iphone, Android, and consoles.
Between those two tools you can easily have enough content to teach WAY beyond intro stuff & open doors for your students to create content after the class has been finished.
You can use GameMaker. It's free, has a sprite creator and has a programming language built in that is similar to C++. It allows you to teach only game elements in a non-programming format or you can dive deeper into the language and require the students to not use the easy tools and do everything with the coding engine. It also has a lot of free resources online. Here's a link:
http://www.yoyogames.com/make
I thought the Unreal Engine and Crytek engines were free to use for academic use? Anyways why not use one of those Mods that even the original half-life and starcraft have? I think it's a good introduction to game design but yet simple enough that anyone can pick up?
Starting programming from game making is like starting physics from relativity. It makes no sense whatsoever.
http://www.yoyogames.com/make
There is a free version - and paid for. You can code via their visual tool - or on the command line. My 11 year old son makes fine games using this!
Every good game producer knows, say, about the event-driven model, coding efficiently in space and time, creating a 3D engine which cooperates with GPU primitives... he may use prebuilt tools which do the job with more optimisation and fewer bugs than anything he has created, but he knows how to use those tools well only because he understands something of how they work.
And every good game writer knows, well, how to write creatively - he is well-read, imaginative, and willing to learn from the successes and failures of others. He doesn't just draw another warehouse and sketch differently coloured aliens to run around within it.
You don't teach mathematics by finding out the most popular calculator of the day and making sure your class knows how to use it, do you? Advanced courses change with the times, but fundamentals settle as a field matures.
The dominant /. mindshare definition of gaming is that it is exclusively 1:1 mapped to 3-d FPS.
If you're willing to break out of that ultra-narrow mindset, there is a possibility of RPGs, text adventures, maybe hex based wargaming, (semi)numerical simulations... A whole world of human computer interaction exists, but only for the open minded.
Reimplement Oregon Trail as a flash game? (try not to get sued)
Supposedly HS kids like vampires and zombie books, so write a text adventure fanfic in the anne rice or twilight universe (try not to get sued). Make all your game lines less than 160 char and play over twitter?
Stock trading game using real stock market data? Or YetAnotherRealWorldFuturesMarketImplementation? Maybe give it a modern twist by implementing it over text messages or whatever?
Hex based wargamer vampire vs zombies? or plants vs zombies? (again try not to get sued)
Actually, "try to write Fing anything without getting sued for copyright and patent violations" might make an interesting and informative meta-game?
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
http://www.heroengine.com/
Free to use, only take money on profit, powerful and easy to learn.
Unity perhaps. Construct (the first one, not construct 2) by Scirra (Scirra.com) is free and open source it doesn't teach "real" programming but it has an object object oriented built in language. It could help the kids learn the basics of logic and a really visual representation of how programming for video games work. There are even some tutorials that you could use or make a lesson plan based off of that make a whole game.
Pygame is a pretty nice little package for quickly building 2D games. Fairly decent documentation and best of all, free! http://pygame.org/
Have you looked at Unity? ahref=http://unity3d.com/rel=url2html-1549http://unity3d.com/>
Its free and a lot of the complex underpinnings are taken care of and hidden away. A simple to use scripting language is used to create the game mechanics. I have never used it but I have seen it used for the Global Game Jam.
I would keep away from teaching programming unless the students already have programming skills which I doubt is the case here. Keep it simple.
The kids here (high schoolers) are interested and willing to learn the SDK. So design the game to the capabilities of the programmers. All these kids need something good for their resumes and Android will look much better than almost anything else.
MAKE SURE THEY ARE NOT LEARNING THIS IN ART CLASS.
I had to fight tooth and nail at the local tech school as a consultant to get them to realize that computer programming is NOT a drawing class. Finally after 3 years, we developed a program that allowed computer programming and it let those kids WORK, alongside the kids in the art classes to develop a project. There are a few programmers who are also good artists and vice versa, but not ALL of them.
Computer Programming (web sites, games, etc..) should not be taught between "still life charcoals" and "how to work with water paints"
but Blender (blender.org) is free and open source. It has a great community behind it.
The "lite" version is free and pretty robust and uses a modified C++ engine...problem with Kodu is that if you run in a secure education environment, your kids won't be able to save their games as Microsoft screwed the pooch on how the engine writes files to the computer and the game code will be inaccessible to students from secure computers in a network setting (even if they have admin privileges,) It's also pretty limited in what you can do and high school students get pretty frustrated with it.
Game maker is great...lots of good tutorials, basic functions are icon driven. Some of the other engines (Unity, Unreal (which is now free by the way) are going to require some pretty new equipment or pretty high end equipment which your school may or may not have. If you are like the rest of us, you are in the "may not" category and probably running on P4's with video controllers instead of video cards. Game Maker can run on lower end equipment without lots of upgrades.
Also check out the Microsoft DreamSpark program if you are interested in xna. Microsoft will give your students the whole kit and kaboodle (Visual Studio, Server 2008, Kinect beta software development kit, etc) for free. (It's what my advanced gaming students will be using this semester.
You already largely answered this question. Tons of tutorials, samples, labs and whatnot are available specifically for making games. While you're teaching them that, you can also pander to the paticular strengths of students and have them work on one big project.
For those who seek perfection there can be no rest on this side of the grave.
Although I wholeheartedly agree with all the people who are going to recommend Unity (which is also the platform I prefer), you might be better served with UDK when demonstrating to students. I'd say that Unity is a 3d game engine/platform made for programmers whereas UDK is a 3d game engine/platform made for level designers with support for programmers. You can get a lot of mileage from both platforms without much programming, but UDK is specifically designed so you can create an entire game without one stitch of programming (i.e. Jazz the Jackrabbit).
Also, I highly recommend the free training videos from 3dbuzz, here are the ones for UDK and here are the ones for Unity.
http://www.alice.org/
this always seemed to get reviewed highly... I haven't used it as my kids aren't old enough yet.
You can try checking out DarkBasic Professional by The Game Creators. I believe they have a free non-commercial license that you could use. It's a very simple but powerful language, that can be used to develop Windows games. Also the App Game Kit by the same company may be of use as well.
The project you are looking for is Bootstrap.
Bootstrap is a standards-based curriculum for middle and high-school students, which teaches them to program their own videogames using purely algebraic and geometric concepts.
Bootstrap uses Scheme/Racket and focuses on the algebraic/functional aspects of programming. The teaching materials are freely available online. They even sell "I program my own videogames" T-shirts.
Love2d.org
I suggest the Corona SDK. It uses LUA, supports Box2d Physics and it's easy to work with a tilemap editor like tiled to put everything together. Plus, you only need to buy it if you want to publish or sell your app.
In fact $49.
It's called 'impact' and games like this are made with it.
You can't handle the truth.
Processing can be a lot of fun for small projects: http://processing.org/discourse/yabb2/YaBB.pl?num=1222641158 Pros: Cross platform, java based, simple IDE, supports keyboard/mouse input, 2D/3D. Cons: Only downside is limited audio support.
mnewberg.com
I was also going to suggest PyGame. I don't know a whole lot about it, but I do know that Python is a great programming language for writing small to medium size programs quickly. It's also relatively easy to learn. I also know that PyGame has a thriving community, and even a zine dedicated to it.
Also, all of the lectures for Harvard Extension's 3D graphics programming class are online for free:
http://itunes.apple.com/us/itunes-u/csci-e-234-introduction-to/id428958018
It's a bit mathematical, but nothing beyond what a smart high school student can handle. IIRC, however, it assumes some knowledge of C. It's probably worth having the students watch these lectures anyway--at least for the ones who are interested in doing so.
|>ouglas
I see no reason for any other tool.
Javascript is what you should teach them. Not the high fallutin everything about it, just the code ganking basics. That way they can use both Unity(free) and make simple and neat HTML5 / Webkit CSS stuff (free). Get their feet wet fast & give them real life skills and a subject they can geek out on in their own time.
.CSS and an HTML5 / Webkit browser with extensive documentation.. such as Safari *ahem*. It really can do some amazing things without a lot of overhead. If you've missed developments there, then go look. This will also let them make cool web projects that aren't so interactive for the lower achievers.
.CSS objects. Strap it together with a bit of Javascript. Check online.. lots of little demos for you to find and use for your curriculum. The result will work cross platform depending on the various implementations of webkit.
Teach them a little bit about "objects" and then using
Build something simple using a browser. Lots of gui events and behaviours are handled by the
Then for the real deal, Unity. Its great. Altho you'll need more of a structured programming plan and an understanding of how unity is auto-magically "helping" you and where you need to take over and make your own event handlers.
Unity supports both Javascript and C#. To get around project-build / version control problems: export all your modules as a package and submit that into your version control. Then to get the newest version into your project, update your packages & then just re-import that package into your project.
Check out Real Programming for Kids at http://www.realprogramming.com/ My son took this years ago and in his first summer course programmed a version of Donkey Kong and learned Visual Basic in the process.
Most game engines are free nowadays, specially if you're a small studio or an academical institution.
My advice is to go for Unity.
In my experience, code is fine with Unity, I've not had any problems with it mangling that. It's the Textures/Prefabs/Scenes/Shaders and the way they link to the in-game objects that gets mangled by source control. So after a botched commit you might end up with those new objects you added being untextured, or having the components unlinked.
It pays to be obvious, especially if you have a reputation for being subtle.
Gamemaker is awesome, but Kodu is a good first step
Don't know what to suggest as tools but...at least the question is being asked. High schools today teach kids to be...users, not creators. Their idea of 'tech ed' is to teach kids to use a recent version of MS Word or Excel. Even the old English class standby has become more about reading stuff that someone else wrote and answering questions about it and much less about writing something new. The high school yearbook class has become all about snazzy software to present graphically-attractive pages rather than the content within. So...when someone wants to actually have kids work on creating a new video game, they are really swimming upstream against the current thinking. More power to 'em.
http://www.ogre3d.org/
Ogre is a 3D rendering engine with a very large community based around it. We used it for a proof of concept for a real-time simulator, and there were few limitations we faced in using it. It might not be as clean as unity, but it has more flexibility in licensing, as long as you don't might copy left, which in your situation you shouldn't. Actually, I just looked and it seems they made the switch to the MIT licence.
The proof of concept was actually a major improvement over the production simulator, but of course business politics always wins in the end.
I am teaching my nephews how to program during their week off from school. I went with a platform that all households had readily available: Excel. Excel VBA is robust enough to create fun games from the Atari generation, forgiving enough to keep new programmers from being frustrated quickly, and the skills learned will carry my wards into many business environments for years to come. Even if Excel goes away, learning to manipulate data, graphics, and data in a spreadsheet program will be useful some day.
Since you have previous pro game dev experience, you should know the entire crew is divided up into teams by task. Assuming some sort of 3d platform, not all the kids will have equal interest in art, modeling, testing, coding, rigging, etc. Break them up into teams.
Also, don't dismiss the allure of 3d... it pretty much is the main reason we don't all spend countless hours playing sidescrollers anymore, but aside from phones its the only scenario these kids likely know. Even if you just recreated an old 80's Atari game with minimal 3d, it would seem cooler and engage the kids more.
Blender can be a pain to learn, but once you do it's actually a very efficient workflow. The 2.5/2.6 releases are capable of some pretty amazing effects.
Even better, all scripting in Blender is Python. Much easier to learn than Java or Android SDK.
My second suggestion would be Scratch, but high school kids might turn their noses up at how child-friendly it is.
Game programming would be the last thing I would teach to novice kids, as it has several different parts, from low-level hardware-oriented code to networking, high-level scripting, databases and map design, not to mention a non-programming parts like the graphics.
If you really want to create a standalone game I would suggest something simple using Flash. But if you want to get them into game programming (and teach them actual techniques that it needs) get them into modding. There are many games designed to be easily moddable, the instant feedback and success will be a great motivation, and the kids will learn plenty of stuff they can later use.
How about teaching kids how to play games? Only a couple generations ago kids played together, outdoors. Today we live in some kind of Asimov's Foundation world where kids either play alone in their backyard or go to karate class or horse riding class. In Canada a school has banned ball games because they are too dangerous. Playgrounds are covered in rubber so kids don't get hurt. In Paris, France, playground hours are 9:00 - 5:00 and they are surrounded by spiked fences so that nobody can get in when they are locked up.
As someone who's also been roped into the "teach game development" trap, my advice is to stay the heck away from programming and 3D and any other component that requires specialized skills. If you want the kids to actually finish something, then do what you can to make that happen. Not all of them will be programmers or artists, and you don't want to spend all your time teaching those skills. Plus, it's also pretty common for those that can't program (or model) very well to have really huge ideas that far outstrip their ability to actually deliver - which translates into never finishing.
And to that end, my recommendation is GameMaker, from http://yoyogames.com/ There's a free version, it runs on PC and Mac, it's friendly to non-programmers and programmers alike, and easy to use. Tons of free resources available as well (from good to bad).
If you DO want to move up to the higher production gaming style, consider modding. You can pick up a copy of FarCry for DIRT CHEAP, and it's a very modable game engine with lots of good documentation. Or consider modding Valve's Source (Half-Life 2) engine.
I've used Scratch for children, but I think that Alice is a similar product that is more appropriate for teenagers.
The advantages of these environments is that syntax error become an impossibility, so you can focus upon programming structures. At the same time, they maintain the notion of programming as a language. The programming blocks use words that are similar to the those found in languages like C or Pascal. They also provide a rich library of graphics and sound resources, so you can focus upon the games programming aspect.
Of course, that advice makes certain assumptions. One is that they enter with no programming skills and only a meager concept of what programming is. I am also assuming that you don't have the time to go into depth (for programming) or to cover the full breadth (programming, graphics, audio, etc.) since learning how to program well takes about a year (basic software design, language, data structures, and algorithms). Of course, all of those assumptions may be wrong.
Game Maker - cost: $0 for the free version
While it isn't programming by writing code (it's drag and drop actions, though you can use typed code later if you'd like to teach them that), I think it's the best way to teach game development. It's simple to use and quick to learn, but is still capable of creating pretty much ANY video game. Almost any other suggestion will involve knowing a decent amount of programming beforehand and will thus not really work. You'll be limited to 2D unless you want to do serious code, but for a beginner's game you'll most likely limit yourself to 2D anyways.
I started with Game Maker, and from it eventually moved to 100% AS3 Flash game programming, so the skills involved in creating a Game Maker game really do transfer over to other environments.
Pros:
Really easy to learn - no programming knowledge required
Great for rapid prototyping - development is generally much quicker than other environments
Cons:
Limited to Windows (might not apply now, they've been working on it. I think it does HTML5 now.)
Limited to 2D unless you want to teach typed code
In order to do some things, you have to buy the full version (though it's in the $20 per copy range). You probably won't need to buy it at all though.
Since packages can include all those components and relationships. If you make a "hierarchy" of packages that you import and Unity project folders that contain things that you sellect & export packages from in their entirety, that can work around most of that suffering. (ie click on your scene, select dependencies, uncheck common things you don't want in the package and export)
Irrlicht.
http://irrlicht.sourceforge.net/
My introduction to game programming was Multimedia Fusion (http://www.clickteam.com/eng/mmf2.php). It uses an event-based logic system that's quite easy to grasp as a beginner.
http://www.alice.org/
Several publishers have produced recent books on HTML5 game authoring. Perhaps this would work well?
I did the same thing for a group of middle school students back in 2005 and after evaluating a bunch of graphics and sound libraries, we settled on Basic4GL.
Basic4GL is everything BASIC was, except without line numbers and with all the GLUT functionality built in (minus the initialization cruft). It also supports sound, loading a bunch of texture formats, and has the NEHE tutorials ported to it, and runs on VERY low end hardware. Download and run the demos -- you'll be impressed.
The kids did exceptionally well. We got a classroom full of (failing) middle school students to understand the idea of a coordinate system, and use this to design their own spaceship (using only a piece of graph paper and their own derived x,y coordinate pairs). We then guided them through animating this spaceship with key press events (and in the process they learned about coordinate transformations).
Our goal of having them design their own textures and sound effects never quite panned out, since we ran out of time -- but our ultimate goal was a classroom produced game where every student had a piece of the production workflow.
Afterwards, I found myself using Basic4GL for OpenGL prototyping since it does away with so much of the initialization, etc.
For example, the following is a whole Basic4GL program to draw a triangle
This was, of course, several years ago. You may find something better now (I'd recommend looking into Processing. I'd stay away from anything that a kid can't set up on his own (i.e., combination of multiple libraries)).
For the classes, you want to emphasize the basics while at the same time giving them something they can sink their teeth into from Day 1. I started with having them type in a very simple program in the first class and then run it themselves. I went from there to what the coordinates mean, etc. You will find that some kids are faster than others, and some of them might surprise you. You will also find that they'll do really well teaching each other.
Good luck!
I think it would be advisable to start with something 2D, that is simpler to understand and to code. On their first game the kids will have too much to learn, so not making them learn analitic geommetry, lightining, all the tools you'd need for 3D, and lots of other stuff (like "why is my game that slow?") is a good thing. First focus on general programming and basic I/O.
Now, if you take that advice, you'd need a good library for general I/O that is available in a good language for novices. Well, here I can recomend Pygame, on Python.
Rethinking email
Take a look at Monkey; it's $120, but they can be very flexible if you contact them to explain the situation.
However, the demo provides an unlimited (non-commercial) HTML5 target for free, so coupled with a decent modern browser, you could teach them all for nothing. (The same code can later be compiled for XNA/Android, etc, in the full version.)
http://www.adventuregamestudio.co.uk/
Pretty easy to use, and an active community last I checked. There are also some good youtube tutorials. Not so good for action, but VERY easy to get started.
Inform 7. The good thing about text adventures is that they don't necessarily require gigantic graphics and sound budget - you can focus entirely on storytelling.
Inform 7 is also a good example of how programming can be extremely unintimidating. Inform is one of the few "natural language" programming languages that actually accomplish the goal of being an usable programming language and not making programming too verbose.
I think I7 would be a good platform for introductory games from a pedagogical point of view, at least - it lets you focus on creating puzzles, internal logic and story, which to my non-expert understanding are probably fairly important topics when you actually sit down and design games. =)
if you want a physics dynamics engine, you want ODE. if you want a small amount of code (a high bang-per-buck ratio for the students i.e. they get results fast), use python. ODE has python bindings, so you win both ways. there are plenty of example recipes for python-pyode with OpenGL and pygame, which you don't entirely have to "understand", just copy cut/paste just like any other programmer would, and it gets the job done.
now, if you're looking for web-based, i cannot recommend "pure javascript". it's too much like hell on earth: you'll be teaching the kids the wrong lessons (namely: stay the hell away from web development).
i _can_ however recommend pyjamas. we have 3 or 4 example games already done: one uses SVG Canvas, it's "asteroids". then there's minesweeper, hangman, lightout and i also wrote a sudoku game a year ago. not one single one of those examples is over 1,000 lines of code. i think the asteroids one is about 600. http://pyjs.org/examples
the nice thing about pyjamas is that you don't have to "mess about" setting up the libraries. you just go straight in. thus, the bang-per-buck ratio (lines of code required to achieve a particular goal) is very very much higher than average.
I've personally had some luck with something that's not on this list yet: Lua and LÃ-VE. Yes, it's 2d; but it's cross-platform, simple, and very very easy to use. As a bonus, it uses Lua, which has some traction other places in some games.
http://love2d.org/
Back last year during my final year, I made the mistake of taking a "Video Game Programming," class that one of m favorite teachers was offering.
She taught the first semester using Flash (CS4). All I can say that it was a disaster. Out of a class of 15 people, I was the only one who had programming experience. I saw so many of my peer struggling to keep up with the "assignments," which were just 10-page packets of "Click this, then this, set to this value, and type this...". They showed us how to do things in Flash, but they didn't explain anything of what was going on. It wasn't too bad for someone like me (who has prior experience both in Flash and programming), but everyone else just didn't get it.
Lo and behold, the second semester rolled around after January, everyone else except for me and seven other dropped the class. I found this semester much worse, mainly because of the tool that we were given to use, Alice. Supposedly it was considered much easier to use, but I found it to be one of the biggest pains in the ass. It was bug ridden, very strict for what it would allow you do to, and just made no sense. I found it to be a nightmare because of its "drag n' drop programming" nature. I felt it even robbed many people in the class of what real programming concepts were. NEVER USE ALICE!
But for your class, I suggest using DarkBASIC Professional:
http://www.thegamecreators.com/?m=view_product&id=2000
I started out programming with BASIC, it was very easy to use and understand for a newbie like me. DBPro has most of your standard BASIC syntax, but with a lot of added commands for 2D and 3D game development. There is an active community surrounding it, tons of sample code out there, two or three books about the language, and best of all, it's not free to use!
What you could also do is first teach DBPro, then slowly move into C++. Why? Because the makers of DBPro, also make a library called DarkGDK, which is very similar to BASIC brethren. You might run into a few issues here, since when I used the library, it wasn't documented as well as DBPro was, and most of the community's focus was on DBPro as well. Us using DarkGDK were on our own, but hey, we figured it out.
If you go through on this, I hope your class goes well. Just two more things:
1. Focus more on programming than game design. Whatever kids do actually take an interest in this stuff, it will benefit much more later on.
2. Explain concepts (as well as other things). If there is one main issue I saw with my "Game Programming," class, or my current CS classes at college, is the teacher/professor not fully explaining how things are working. Don't right of the bat use abstractions, use a few examples first.
I wish well, and good luck!
Game programming is a very complex kind of software development, prone to errors (all professional game programmers write hideous, insecure, unportable code with utterly broken networking), and requires massive amount of effort placed into non-programming-related parts of the project (art, music, story).
Teaching something that complex in high school will inevitably degenerate into mucking around with pre-made templates, with no educational value whatsoever. If someone really wants to teach kids programming, he first has to give them an idea about true breadth of software. Most people, including adults, do not realize that there is software other than games, MS Office, Photoshop, web browser, and whatever hideous custom-made crap they use at work. I am not sure if they even know that web sites run on servers.
Contrary to the popular belief, there indeed is no God.
Speaking as a current indie & AAA gamedev who has built game-related curriculum for 3 schools (middle school through college)...
Because of the diversity of student types (artist vs game designer vs programmer, etc...) I recommend teaching EPIC's Unreal Development Kit (UDK).
The tools are mature and will immediately offer something to every role on a game project.
As for yourself, the UDK uses Unrealscript which is based on a C++/C# syntax.
There is a wealth of knowledge via books and internet tutorials. (e.g., Just typed in "UDK tutorial" in YouTube and received over 4500+ results!)
A nice bonus is that learning UDK is something the kids can actually put on a resume and/or help them get an internship.
Milage will vary with other pre-built gamedev environments.
Below are a few all-in-one-solutions that have editing features, based in a Windows environment:
App Game Kit (AGK) - http://www.appgamekit.com/
Construct2 - http://www.scirra.com/construct2
Game-Editor - http://game-editor.com/
Game Maker - http://www.yoyogames.com/make
Game Salad - http://gamesalad.com/
Scratch - http://scratch.mit.edu/
Good luck!
You don't need this to be complicated. Python w/pygame will do just fine for 2D PC games.
It might interest you to know that a least 1 developer I know of(Notch) has made videos of himself making games for Ludum Dare. He does it in Java but it might be worth making the students watch.
http://www.twitch.tv/notch
A local after-school program my kid was in used StageCastCreator. It is $50 for each license.
The thing is, you don't want to have to re-invent the wheel for this project (models/textures/etc), and you sure as hell don't want a steep learning curve for the toolset.
Using Google Sketchup in combination with Valve's Source SDK might be a good option. You do have to purchase a game to get the SDK, but these can be had on Steam for as little as $2.49. I'm not a programmer, but I followed this comprehensive how-to, and I was able to build a decent Left4Dead map in 3-4hrs a day over the course of a week. (I built a map of our home that my nephews gleefully cleared of zombies last Halloween)
Props to you for taking on such a project. Good luck!
A good place to start is with a web-based Javascript environment like happyfuncoding.com. See the tutorial videos that are part of the site.
check out google forplay
Why waste your time? Use "building games" to motivate some _actual_learning_, both in serious software engineering and in algebra. http://www.bootstrapworld.org
Full lessons and demo programs can be found on the env3d website.
Javascript is what you should teach them.
Teach them a little bit about "objects" and then using .CSS and an HTML5 / Webkit browser with extensive documentation...
Lots of gui events and behaviours are handled by the .CSS objects. Strap it together with a bit of Javascript....
The result will work cross platform depending on the various implementations of webkit....
Altho you'll need more of a structured programming plan and an understanding of how unity is auto-magically "helping" you and where you need to take over and make your own event handlers....
To get around project-build / version control problems: export all your modules as a package and submit that into your version control. Then to get the newest version into your project, update your packages & then just re-import that package into your project.
Wow. All that stuff would be great if he was teaching a programming class. He isn't. He's conducting a video game development workshop.
Surprised nobody here has mentioned Adventure Game Studio yet. It's free, runs on Windows. Ports are available for linux and mac. Some pretty great games have been made with it, including the excellent Sierra classic remakes by AGD Interactive. If you want something more old school, there is also ScummVM. It's mainly used to run old games by enthusiasts, but it can probably be used to develop new games as well.
I don't really agree with the nay-sayers who seem to think that students aren't capable of creating something as complex as a computer game. Exactly what are you implying about high-schoolers?
Look, I worked in game development a while back (and I'll eschew my commentary about sweatshop labor for the moment). Yes, it's very complex. Yes, there are lots of interrelated tasks. But if you have motivated kids - and you're willing to put in a crap-load of hours yourself - it might very well be the sort of intellectual nourishment that a lot of kids are starving for in this day of "no child left untested"-style teaching. Seriously, motivated kids just needs enough skills to get started and someone who's passionate about the subject matter to keep them focused on the final "product". Many kids thrive on complex problem solving and semi-real-world project-oriented school work (and I don't mean posters and powerpoints).
If you are not that person, or you think the kids will see this as just another bull*it make-work project, then I'll back away from my initial disagreement. But if that's not the case I'd say it's time to get to work.
There are, by the way, many open source game development platforms. Choosing the right one is really more about deciding what sort of game you want to create. Here are a couple that meet your criteria, although without knowing the genre of game you want to build it's tough to choose appropriately:
http://love2d.org
http://www.pygame.org (already mentioned by previous posters and easy to use)
Or maybe you want to go "old school" and create a text adventure ("You are in a maze of twisty little passages, all different..."):
http://www.tads.org/
1. To make it interesting, it must be something that they will be able to use at home, not just in a school setting.
2. You also need something that will enable them to learn how to communicate while doing the work - and if it's interesting enough, they'll work on it more than just in your allocated time, and possibly even do their own things too (see #1).
As a result, it is probably best to use something that is open source. From that perspective, you have a few options:
1. Python - easy to program, and you get GUIs using PyQt or PyGtk.
2. Qt or Gtk coupled with any other language, though C++ would be a good one if you're willing to teach it; otherwise see #1.
3. Android Development Kit, and I'd suggest setting up a local "in-school" AppStore as well and showing them how to side-load apps. The "in-school" thing would let you have some control over the project you're directly, while the side-loading would let them do their own thing on their own devices. You could even have some folks work with the Arduino-based USB Kit too for doing extra controls if you like.
$0.02
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
AIR (Adobe Integrated Runtime). With very little prep work you can get to animations and events which are at the heart of all modern GUI systems. I'm using it to develop a game on a Macbook Air. :)
LOL this entire submission is better suited for April 1.. Read the fineprint in it, and then check all the threads. No body has read it all or fulfills it all. Each of the threads ignores the part of the submission that excludes their suggestion re: specific platform support, specific tools, etc. Its doubtful there is actually an answer.
A workshop that meets weekly and they "actually create a game, start to finish" without programming, but programmers can work on it.. Platform specific, but excluding most dev tools for those platforms.. without skills but has to be a skillful task. Perhaps the only solution satisfying all that is a checkers game using everyones smartphones as the gamepieces.
Most people speculate about motivational and educational benefits of certain tools and programming activities. We actually measure them. Scalable Game Design, using AgentSheets, teaches kids how to make games starting with simple 1980 arcade games such as Frogger and them gradually move on all the way to modern SIMs like games including sophisticated AI. With middle and high schools all around the US we have a close to 50% participation of girls. And don't think this is just for K-12. The curriculum + tool includes activities for ugrad and grad level education as well.
- Don't think this is possible? See some teacher tranining in action: http://www.9news.com/news/local/article/202987/222/Teachers-play-video-games-for-science-
- check out research data: http://scalablegamedesign.cs.colorado.edu/
It gives immediate results and not only shows an idealized programming space, but one that game and sim developers actually use. It allows you to program in JavaScript also, which is the new intro programming language in CS 101.
-- thinkyhead software and media
www.heroengine.com
Free, except for the art tools. (3dsMax or Maya)
Immediately get into object oriented and functional programming. The extensive wiki has some great tutorials.
First lesson: server side script via chat command.
Second lesson: client side instancing an object, attaching a class to the object which has class methods handling mouse inputs
Third lesson: replicating an instances object over multiple clients
Fourth lesson: GUI design
etc
etc
You probably will not have a functioning game by the end of the year, but those that do well in the first semester could move up to working on something that the advanced students work on year after year. Coordinate with the art department to have a class cranking out 3d assets with Maya... free work force for your game. The students keep their developer accounts after they graduate (those who want to) and when you've got something that is good enough to get some VC funding, you hire them as actual developers and start on a new game with the students.
One thing I've learned while teaching High School. Never underestimate a motivated high school student.
http://www.thegamecreators.com/?m=view_product&id=2030
I suggest using Alice.org. I teach the same thing to college freshmen, and Alice's UI is so easy to use that it gets them started programming from day 1.
I don't see it mentioned much previously, but why not use a freely available (for non-commercial use) SDK from a popular AAA title, such as the Half Life 2 SDK (Source Engine), or the various Crytek SDKs?
Crytek's especially is super-easy to get started with and gives the kids immediate, tangible results rather than miring them in months of boring coding that will turn them off to programming or graphic design forever. In five minutes, they can have a basic map created and they can run around in it. I think the SDK itself is even available without the game itself.
I personally got into game design initially with the original Half-Life SDK, then the Deus Ex SDK. If I'd had to start out learning how to program BEFORE I had something immediate and tangible to work with, I never would have touched a single line of code (even to this day, I don't much like programming, I do it because I have to)
I've been developing some Android geocaching games using Basic4Android which might be described as a greatly updated flavor of Visual Basic. It compiles into Android type Java before compiling. The few applications I've done work as expected and the learning curve is greatly less than than doing Java.
Best Tom B.
I bravely/foolishly enrolled in a CS program at UBC last September. In Intro to Programming we used DrRacket (Scheme) and How to Design Programs (online). Both totally free I'm sure. Here is all the course content online:
https://sites.google.com/site/ubccpsc1102011w1a/syllabus
Lab 5 was Snake and Lab 12 was PacMan.
Used both when I was starting out, and it's easy to get things up and running. Granted its 2d, but truth be told adding the extra dimension makes it much tougher starting out.
http://www.libsdl.org/
http://www.allegro.cc/
The other thing I used was graal online (http://www.graalonline.com/). May not be the same as yesteryear, but when I fiddled with it it was easy enough to create zelda-esque game worlds (think link to the past).
Finally, if you're stuck on 3d, I know at least USC's interactive media division uses Gary's mod. If I remember correctly, getting an academic license (annual fee) is relatively reasonable and you get access to alot of valve's games.
Do you want to teach games or programming?
If you want to teach games, the first one should not be a computer game. Make it a board game, a card game or something else that you can create with paper and pens.
Anything beyond that adds complexities that distract from the game design itself. There is very little design-wise in a computer game that you can't have in a board game.
And yes, I am a (hobby/indy) game designer. I've made some board games, a card game, a play-by-mail game, two pen&paper roleplaying games and a bunch of computer games. Largely in that order.
Assorted stuff I do sometimes: Lemuria.org
Apart from the VCS stuff, learning about objects/events/behaviors is very much part of a video game development workshop. You cannot develop games without at least understanding some aspects of these...
Unity is by far the best choice because then it will not matter if his students have Windows/Macs/iPhones/Android. I mean seriously, what is he going to do when he starts and XNA class and find that 80% of the class do not have the hardware needed?
It's either Unity or pure javascript/HTML5 canvas...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I see a lot of suggestions on how to avoid coding which seem silly to me. High schoolers that are interested in making games are probably smart enough for a little coding, and it'll do them a lot of good. It certainly doesn't even rule out other people (visual and sound design, etc) as often the design takes as much or more time than the coding.
I really like pygame, it's:
a) python
b) fairly straightforward
c) engine-less
d) cross-platform
e) free and requires only a text editor (I like komodo edit for python, it has the best python auto-complete I know of)
It's not really the thing for a 3d game, if that's your goal (which seems out of the question) you'd need an engine probably. It does a great job of 2d games, and has no inherent 'game engine', which I like, because kids will learn about a lot of the things that an engine is doing under the hood. Have some kids design sprites and levels and sound effects, have others code up games. Writing little platformers and rogue-likes is pretty straighforward.
Ze Atomic Device! It iz Ztolen!
Have you tried gamemaker 8 ,its free at yoyogames.com, i use this to produce games that give great demos of technology and the community are great alongside the documentation.
Look at programming boot camps or summer camps for kids in the same age range, and then see what software they are using:
http://www.internaldrive.com/courses-programs/video-game-camps/
The above is a two week course aimed at kids: 7-10 | BEGINNER – ADVANCED
Software: Arcade or Platform game using Clickteam® Multimedia Fusion 2 Developer® and Adobe® Photoshop®. Build custom characters in Spore Creature Creator and import them into your game. Take breaks with supervised outside play, sports and techtivities.
If that isn't the right age range, find some that are.
Might also look at:
DarkBASIC 3D Games Creator
The Games Factory 2
They get really good reviews, teach the basics of game programming, but probably aren't so hard as to scare the kids to death.
Python and Pygame (already mentioned).
And on Amazon, check out:
The Game Maker's Apprentice: Game Development for Beginners (Book & CD)
It comes with a CD with some free software, and it is supposed to be good. I got a copy of it for my son for Christmas, but I haven't had time to look at it yet.
Doctors destroy health, lawyers destroy justice, universities destroy knowledge, religion destroys spirituality
Renpy is built on pygame, but much easier to use. It's especially suitable for creating visual novels and can be learned easily by people without programming experience. While you have the full power of python (and pygame) at your fingertips, you can already get impressive results without fully knowing any of the underlying technologies. It has a super awesome one-button distribution builder for all of windows, linux and MacOs (building distributions for a given system can be done on any other system). It's super easy to mix graphics, music, animation, text together and get something awesome.
http://www.renpy.org
Disclaimer: I work for Autodesk. Students and faculty can download pretty much everything Autodesk makes at http://students.autodesk.com including 3ds Max, Maya etc. There are lots of free tutorials and other resourses on area.autodesk.com as well. Hope that helps!
on sale through Jan 2 for just 4.99 per copy - DIAMOND edition with both expansion and the best game toolkit around ... find it at
gog.com
I haven't seen this mentioned yet, but I also only skimmed the comments. Check out UDK. It is the engine that powers the games the students are playing, full featured, free, and pretty easy to learn. I've worked at ASU's CampGame over the summer for a few years now, and we take a new group of students through the game dev process (using UDK) over the course of 6-8 weeks every summer. At the end of it they end up with a game "prototype" (pretty much a demo version of the game. All the game play is there, but it needs more levels and polish before I would call it a full game.)
Here's the link to CampGame: http://games.asu.edu/campgame/
And the link to UDK: http://udk.com/
Hope this helps someone.
Contact lego. They might even sponsor the school. The game is Soccer
Many schools are starting to use JumpCraft (http://jumpcraft.com) for this purpose. JumpCraft is designed to make 2D games, and has its own Triggers/Actions programming method similar to that in the StarCraft campaign editor, and has the ability to write scripts in Visual Basic.
http://inform7.com/
I was a developer for Codea. Its an iPad app for rapidly prototyping games using Lua, similar to Processing's model. We have found many people are using it to teach their kids how to program as well.
http://twolivesleft.com/Codea/
I'm sure its been said somewhere already but Pygame is awesome and simple.
Sounds cool, but not for the purpose at hand.
Professional Wild-Eyed Visionary
As pointed out it sounds like Unity is your best bet- full disclosure I used to teach for 6 years at a UK university and during a masters in education I ended up focusing on developing my unity classes further. This eventually led to http://unity3dstudent.com and an invitation from unity to speak at their conference. I now work for Unity and working on defining our educational output so anything I can do I help you out please get in touch using will at unity3d dot com. Good luck with the course!
Paper and pencil.
Tom here from Scirra! We make Construct 2 (http://www.scirra.com) which is an HTML5 game maker.
We have an extensive free edition available which people make a lot of games from and is perfect for teaching with.
We think HTML5 is the future of web games (most people know Flash really is on it's way out) and we think Construct 2 can offer you and your students a lot. Check out our beginner's guide which has been viewed 120,000 times!
http://www.scirra.com/tutorials/37/beginners-guide-to-construct-2
If you need funding for a project check out donorschoose.org.
Requires no coding (but you can do scripts). I beleive there is a free version, but I can not remember off hand and can not get to the site from work, it is pretty cheap though. The system is designed for 3D games, but does not have to be the so called "Shooters". They contain stock media and models so you dont have to hunt those down. But there are a lot of sites around with freebies. Last time I checked had a pretty large following and there are two versions. One for dx8/9(i beleive) and one for DX10(no longer being developed from last time I was on the site.) . They also have other game making tools and also a basic language wrapped around DirectX. I suggest this, because if fits your needs. Kudo is nice, but to child like. If this was elementry or middle/jr school then maybe, but you are talking almost adults, treat them as such. Another plu with this system(FPS Creator) it compiles to native code and can be ran with just the executible. Only the latest DX needs to be installed. The source code is availible as well, this will satisfy your possible programmers. It is written in Dark Basic their flagship product. They have a free version of that as well, and I think FPS Creator will compile in that, but you must check the docs for that. I used this for a long time for making quick layouts for games and such to mess around in. You can make a one level game in an hr or a more detailed one with a bit of effort. The editor is WYSIWYG with a view for making small ajustments, for lighting and such.
While not really made specifically for games, rendering and manipulating shapes on the screen is really easy with vpython aka visual python. I have made some extremely simple 3D games with it with my son.
Maybe you can try jmonkeyengine. It's a engine for java and open gl, has a complete environment based on netbeans, physics engine and also works with android.
Unity3D meets many different needs... you can code pretty much any type of game, but think of Unity3D as the Visual Basic of game design. It has nearly everything you need in a single IDE which also has full C# language support. If you wanted to teach the kids things like game programming theory like rendering and shading... well that's something else altogether. If you want to teach them how to make an actual game... use an engine like this.
Unreal Engine 3 is also nice, but I don't think it's nearly as intuitive. A bit out of reach even for really bright teenagers.
I do however recommend trying to convince the kids to read a book on game/3D programming as you go along... like a homework assignment. There are a few really good ones which cover the math involved in the first few chapters and if you help them a little, you can teach them about the power of matrices... which needless to say is pretty much the entire underlying foundation of game engine programming.
Also, writing a game without an engine is total insanity when teaching if for no other reason but audio synchronization. I have used months at a time in the past just coding high granularity, event based audio code. That topic along is far beyond the scope of when you could teach in a 1 day a week course to kids. Stick to a premade engine.
A nice little open source game making program
http://game-editor.com
Might be of some use and comes with some tutorials as well on the site.
I have not used it so do not know how well it works just came across it one time but could be worth a look.
www.scirra.com Consturct classic is free and Construct 2 is cheap and you can make html5 games with it.
It may not be marketable (and may date me a bit), but my HS programming class was in BASIC, and the final was to make a game. I don't know what the equivalent would be today (java?), but it was quite useful learning the basics of good programming first and getting an idea of what was easy and what was hard in writing software.
I don't know that a workshop is going to do that.
When I was in 9th or 10th grade, I took a programming class in BASIC. One of the group projects we did was a Tetris clone (We called it Leftris because the blocks fell to the left...to avoid plagiarism, of course). The teacher diagrammed each routine/function as an IOP (input-output-processing) diagram. Two of us worked on each routine, and the teacher did the graphics subroutines. It was pretty awesome. He then gave us a few 'free' days to tweak it however we wanted, which included summoning a straight piece on command (so we could get a high-scoring Leftris).
The point is this: Don't focus on fancy 3D-engines and texture mapping. Focus on letting them do something fun without realizing how much they're actually learning. The second-level class could be on building a portal engine...there are books that will lead you through it (didn't the HeNe tutorials do so as well?).
Chess, Checkers, Monopoly, etc. are some of the most successful games of all time. And they do not require a computer to design or play, and at the very least if you cannot design a decent game on paper, how could you ever hope to make a truly great game with the extra work of programming a computer? I'm not saying some games don't require computers to design them at some point (i.e. fps), but nerf guns can simulate an FPS in real life and equivalently football/baseball/etc are very popular 3d real life games not requiring a computer to design.
He relies a lot on trial and error (which is of course a bad thing) but so did I at that age.
On the contrary most of our society is built up on trial & error, trial and error or "mistakes" are good, because they are all part of the learning process (http://en.wikipedia.org/wiki/Learning#Types_of_Learning) the only bad thing is not learning from the mistakes.
Go for it! Your goal is definitely possible. I know because that's what we've been doing at our school for the past 18 months. Games development was a real interest point for many students so I started talking to people in industry and academia about the best way to approach this. No one really had any answers but we were given a few more problems to solve: "There are not enough skilled IT teachers so you need to address that problem at the same time" and "You need to find a way to attract more females into your classes." In the end I thought 'what the heck, I'll just run a class and we'll figure it out as we go.' I guess the most challenging aspect has been the fact that I'm not a teacher, or a programmer, or a graphics person, or a mathematician, but I thought if I could find a way to support the learning then anyone could do it. To cut a long story short, I got the class to "brand" their class and they really took ownership of it, and that was key. The students work alongside me and help to make the decisions. We tried all sorts of things then we'd sit together and decide what worked and what didn't. I'd actually been testing the pre-release of Kodu with the students so our first mentor was Mark Finch at Microsoft Research. We also had a guy visit that used to work at RockStar Studios. He talked to us about structuring our group like a games development company. Because we were constantly seeking advice from industry people, mentoring became a huge part of our model. Rather than writing a novel about it here, you can check out the model we came up with here: http://www.uptdigital.com/ There's a video of our Microsoft TechEd 2011 presentation on the front page and also a description of how it all works on this page: http://uptdigital.com/mod/resource/view.php?id=6 Our site is a bit of a mess. It has been a challenging year for us as we were right in the city during the earthquakes and had to be relocated (without our PC lab). We spent most of 2011 developing our concept and doing promotional work. In 2012 we're welcoming our first test pod in another school (John McGlashan College in Dunedin). UPT Digital students will help to mentor that pod. And, we're bringing NCEA assessments into the picture. One of our students did the Computer Science STAR course at Uni this year and got A+ and A-. In 2012, we have 5 students doing the STAR course. I won't lie, this is chaotic, mind boggling, very challenging, and definitely not for the faint of heart, but it's inspiring, exciting, fun, empowering and WORTH IT!! We're creating a site called IT Hothouse at the moment. It might take us a while because we're learning as we go, but it's a generic brand we've created so other schools can manage their pods and connect together to support this kind of learning, and it will be free. We'd like to help and collaborate with other schools. Feel free to contact us. My contact details are on our website. We'd love to help if we can, and I'm pretty sure you could help us too! :)
Rpg Maker 2003. It is completely free but requires no programming skills. It is in 2d so it could be done in the time required. It also helps students get a feel for what making a game is like but in a non threatening way.
Check out rpgmaker.net, they also have other game engines as well.
Panda3D supports Python or C++ development. My school has used it for a couple of game development related courses and the students loved it. I'm just mentioning Panda3D in case you feel the need to start out in 3D: we actually start out in 2D with something like SFML and C++, but that is part of a 2 year college program that leads to C++/OpenGL development. Panda3D with Python might work for a HS class. From the website: "Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is Open Source and free for any purpose, including commercial ventures, thanks to its liberal license." http://www.panda3d.org/ Also worth looking at might be Alice, if Panda3D/Python is too much for them. Alice has versions for middle/HS, and lots of teaching aids. "Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience." http://www.alice.org/
I'd go haxe (http://www.haxe.org/) if I was you. It's as easy to learn as JS / AS3, is completely free and open source, and compile to whatever the hell you want! There's no 3D right now (not easily) but if you're teaching someone how to make games all you need is some simple sprites.