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!?!?
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.
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/)
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!
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
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.
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.
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.
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
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.
This is completely wrong of course. Programming is best taught by doing .
So is math, by the way.
|>ouglas
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.
Sadly, this view isn't limited to schools. Lots of design shops started doing websites next to their traditional paper offerings (posters, flyers etc). A lot of people seem to think creating an image of software is not so different from actually creating software.
Pretty good is actually pretty bad.
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.
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.
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.
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.
I second this. Used it for years (ironically enough right up UNTIL yoyogames bought it out). It is rediculously simple to make basic games using drag and drop stuff, and the basic engine takes care of all the window creation, image loading/drawing, ect, and there's also a C-like language (I think it's loosely based on Python actually, but doesn't really look like it) that is quite powerful. It's an amazing beginners tool, and was actually created by a professor to teach game design.
All the world's a CPU, and all the men and women merely AI agents
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)
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.)
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/
I all but scream this at the people where I work. We have two intro to web design classes. One art based with dreamweaver, and one IT based that teaches the exact same thing, only explains some of the HTML. The problem is they both count as the pre-req for the later IT classes. Nothing like someone thinking they know the basics of web design from an art class.
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!
Probably this. Blender itself has a steep learning curve, but BGE (Blender Game Engine) is pretty easy when it comes to setting up in-game logic. The real downside is that it is kinda, well, painfully slow, but you do get a lot of bang for your buck (in this case effort you put into it).
You can even get a very, very rudimentary FPS up and running in a half-hour.
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.
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.
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.
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)
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
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.
no love, reasons why
1) Its in a constant state of broken, want simple box collision? use a fucking physics engine that no one around the project can explain properly, hell even their wiki states that you shouldnt use it
2) lua, no matter how much lua people tell you this that and the other, its the modern basic, if you want to do anything useful with it learn C to bind it, then your just subjecting you self to a wonky language no one serious uses
3) support, there are a few grumpy people bitching about posting twice in the same thread and a wiki that tells you that love.function does love.function, utterly useless lots of times
I third this, My highschool has classes that use this and it works great. Its simple enough to start using with zero programming knowledge, but powerful enough to make decent 2d games. It allows you to start out without writing any code, but it leaves the option open.
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!
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
Contact lego. They might even sponsor the school. The game is Soccer
Sounds cool, but not for the purpose at hand.
Professional Wild-Eyed Visionary
This is completely wrong of course. Programming is best taught by doing .
Where's the argument that "doing" necessarily means "learning how to use the latest toolkit"?
No such argument was provided because no such assertion was made. I said that learning to program is best done by doing. That means the focus should be on the doing first and foremost. At any given time, the best tool for accomplishing a task might be a tool that was invented many years ago, or it might be one that was invented yesterday, but it will, almost by definition, be one that makes it as easy as we know how to make it to get things done. People who argue that things should be done the same way that they did things back in the day are the same sort who think that kids should have to walk to school uphill in the snow both ways, because that's how they did it when they were kids. More particularly, focussing on coordinate frame transformations, the theory of Phong shading, GPU optimizations, etc., is almost guaranteed to turn off the typical high school student from wanting to program ever again.
First get them interested, and later you can send them off for a Stanford education.
|>ouglas
> Where's the argument that "doing" necessarily means
> "learning how to use the latest toolkit"?
It's right up nessus42's ass. I sometimes think the fucktard can't read properly.
Anonymous cowards apparently can't think properly.
|>ouglas
Paper and pencil.
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.
That poor, poor child. My sympathies.
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.
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.
I used Game Maker a few years ago to create a few games for fun. It is bit of a resource hog but it is easy to use. GM comes in 2 flavors lite (free) and pro ($39.99). The lite version should do everything you want but $40 is not bad for full functionality. GM is drag and drop but it does have a script object. All my game I used the script object for 95% of the functionality. There are very few things that the drag and drops are needed for (bouncing off objects). I hate drag and drop since it does not teach you anything. The other thing you might want to looking into is finding a freeware or a cheap game that allows for modding. In the early 90's I modded the hell out of Red Alert. The rules.ini file is editable in notepad. Now you can just download Tibedit and have a GUI for modding. I have heard (but not seen for myself) of a mod that turns RA2 into a space game. I have also recently d/l Aquiria http://www.bit-blot.com/aquaria/ . The website says you can mod and change graphics too. I have been thinking of recreating one of my GM games using the Aquaria engine. Modding is a bit of a side step but it will allow your kids to use an already developed engine and it may give a better foundation for understanding how a good game works before they actually decide to make one themselves.
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! :)
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/