Skip to main content

A classroom game

Submitted by trevize79 on

I'm writing to see if there is any interest or if anyone could give me some feedback on an idea I have to develop a game for the middle school classroom (that is, years 7, 8 and 9).

WHAT IS IT?

The idea is for a fast-paced combination of quizzes and action challenges, particularly for use in those final classes of the day when attention spans start to fall away!

I envision that the teacher will be able to configure the game (with custom questions, etc.) on his/her laptop, then run it on a projector or tv in the classroom. The students are divided into four teams, and they play the game with four USB gamepads plugged into the laptop.

The game will flow quickly from familiar TV-quiz-show simulations ("Who Wants To Be A Millionaire", etc.) to WarioWare-style quick challenges, to short platform or puzzle sequences, even to physical challenges (eg. "the first to run around the room, then come back and press the X button wins").

All these challenges form part of an ongoing competition between the teams, who are represented as different space races trying to reach a particular planet. This competition continues across lessons, and succeeding in the challenges means that a student can buy boosters or special skills for his/her ship.

HOW IS IT TO BE DONE?

I am thinking C# and Managed DirectX. I have used C++ to develop 2D games from very basic graphics engines before. I am not sure if I would have time to complete this task alone. The game is unlikely to need 3D.

MONEY?

I'm a teacher and am after something to use in my classroom, but the product could perhaps be sold to schools or individual teachers. I want it to be easy for a teacher to install, run, and to enter his/her own questions.

Submitted by souri on Tue, 22/11/05 - 2:50 AMPermalink

Since you're not needing 3D, have you thought about doing this in Flash? It might be a little less work than coding a dedicated application for it, and Flash seems more than capable of doing the kind of games you're after. However, I'm not sure how Flash interacts with USB gamepads or if you could use multiple gamepads. You'll have to look that up.

My second choice would be to maybe look into [url="http://www.gamemaker.nl/"]Gamemaker[/url]. You can whip up games pretty quick in that once you've got a handle on how it does things. It'll be much easier than coding from scratch I think.

Submitted by lorien on Tue, 22/11/05 - 6:01 AMPermalink

I'm no flash guy, but can't you write extensions (wrong word I'm sure) for it in C++? That way you could do the gamepad thing if flash doesn't support it natively.

If you want to do the whole thing in C++, have a look at SDL http://libsdl.org that way you could make it run on Mac/Linux boxes too. There are tons of libs built on top of SDL, just follow the libraries link on the main page.

You might consider languages like ruby and python with the SDL extensions too. Certainly easier than C++, and more powerful than GameMaker (and imho flash).

XML is probably a good way to store an extendable list of questions. Have a look at http://tinyxml.sourceforge.net

Also you should ask comp-sci depts at unis if they could make it into a student project. There are whole and half year software engineering project subjects, and lecturers are often on the look out for things for students to do (eg La Trobe comp-sci and the Vic Space Science Education Centre).

Submitted by mcdrewski on Tue, 22/11/05 - 9:46 AMPermalink

From a high-level design point of view, it sounds like there are three basic chunks that can be solved largely in isolation.

1) Choose and/or interface with your buzzer/gamepad
- Simplest solution would be one that supports 'button remapping' so that it can effectively type keys when buttons are pressed.
- Maybe even a cheap USB numeric keypad, a soldering iron and some robust pushbuttons?
- decent affordability will be your challenge I presume.

2) Choose a 'gameplay' solution which can display your questions or quizzes with whatever flash-bangism you want.
- Cheapest solution for prototyping is probably 'powerpoint' (or equivalent) plus some simple macros and a whiteboard for keeping score.
- Next best probably ruby/python + SDL/PyGame sort of stuff.
- Next best probably gamemaker or flash
- More complete solution would be your custom built game in C#/DX/whatever

3) Make it easy for other teachers to configure the game to their needs.
- this will depend on your answer to #2, unless you take lorien's suggestion and use some mediated middle-ground like XML (recommended)
- web page or an integrated 'for dummies' editor would be best, although it could be built last.

And Lorien's also right, your local IT or engineering department would probably love the chance - as long as you don't need it in a hurry.

Finally, while th space-race thing is a great metaphor, and you know your students, you might like to mix it up to allow other sorts of competitions like (say) sailing or racing or horseriding or football or cycling or shopping or flipping burgers or well you get the idea. There's a lot of 'spacemen' games out there and not every student is a geek at heart.

Submitted by trevize79 on Wed, 23/11/05 - 5:20 AMPermalink

Hi Souri. Thanks for your input!

quote:Originally posted by Souri

Since you're not needing 3D, have you thought about doing this in Flash? It might be a little less work than coding a dedicated application for it, and Flash seems more than capable of doing the kind of games you're after. However, I'm not sure how Flash interacts with USB gamepads or if you could use multiple gamepads. You'll have to look that up.

Actually I used to play around with Flash back when it was version 2 and 3, and, while I think it's great for low-bandwidth web-pages, I found it a real hassle to put in any intelligence apart from simple "skip to this frame" events. I am often astounded that people have the patience to turn out even moderately complex games on it. Perhaps this has become easier in the newer versions.

Certainly there would be huge advantages in using Flash, not the least of which is that teachers wouldn't have to download anything!

quote:My second choice would be to maybe look into [url="http://www.gamemaker.nl/"]Gamemaker[/url]. You can whip up games pretty quick in that once you've got a handle on how it does things. It'll be much easier than coding from scratch I think.

Actually I keep hearing about Gamemaker and how it is used in schools to help kids learn game design, so I am keen to investigate it. So far I haven't had the time.

Submitted by trevize79 on Wed, 23/11/05 - 5:26 AMPermalink

Lorien,

quote:Originally posted by lorien

I'm no flash guy, but can't you write extensions (wrong word I'm sure) for it in C++? That way you could do the gamepad thing if flash doesn't support it natively.
If you want to do the whole thing in C++, have a look at SDL http://libsdl.org that way you could make it run on Mac/Linux boxes too. There are tons of libs built on top of SDL, just follow the libraries link on the main page.

I think you're right that flash extensions for C++ (and probably C#) exist. Among other things, these would be very useful for doing fancy cutscenes in a game! I remember looking into SDL in my old job when working with a PS2 Linux Kit.

quote:You might consider languages like ruby and python with the SDL extensions too. Certainly easier than C++, and more powerful than GameMaker (and imho flash). XML is probably a good way to store an extendable list of questions. Have a look at http://tinyxml.sourceforge.net

I have absolutely no experience with "scripting" style languages like python (haven't even HEARD of ruby - talk about being out of the loop!) but I agree that XML can be a great way to store game data.

quote:Also you should ask comp-sci depts at unis if they could make it into a student project. There are whole and half year software engineering project subjects, and lecturers are often on the look out for things for students to do (eg La Trobe comp-sci and the Vic Space Science Education Centre).

I hadn't thought of this! Good idea, though I guess I'd like to really do a good chunk of the designing and coding myself for the hobby/experience of it.

Submitted by trevize79 on Wed, 23/11/05 - 5:34 AMPermalink

mcdrewski,

quote:Originally posted by mcdrewski

1) Choose and/or interface with your buzzer/gamepad
- Simplest solution would be one that supports 'button remapping' so that it can effectively type keys when buttons are pressed.
- Maybe even a cheap USB numeric keypad, a soldering iron and some robust pushbuttons?
- decent affordability will be your challenge I presume.

You're quite right - I was only thinking of this as my own invention, but if I intend to sell it to other teachers, this would be a major factor. I know that it's quite easy to find applications which will "button-remap" for infra-red/usb remote controls, so I'm sure the same is true for gamepads. Though less integrated, this would take out the need to fuss around with DirectInput or other things, I suppose.

quote:2) Choose a 'gameplay' solution which can display your questions or quizzes with whatever flash-bangism you want.
- Cheapest solution for prototyping is probably 'powerpoint' (or equivalent) plus some simple macros and a whiteboard for keeping score.
- Next best probably ruby/python + SDL/PyGame sort of stuff.
- Next best probably gamemaker or flash
- More complete solution would be your custom built game in C#/DX/whatever

This is a good list. As I said before, ruby/python is really not my bag, but I guess I could try to get into it. Gamemaker is now definitely on my list of things to investigate.

quote:3) Make it easy for other teachers to configure the game to their needs.
- this will depend on your answer to #2, unless you take lorien's suggestion and use some mediated middle-ground like XML (recommended)
- web page or an integrated 'for dummies' editor would be best, although it could be built last.

I'm not huge on dynamic HTML either, so I'd rather do up an integrated editor. XML could still be used of course.

quote:Finally, while th space-race thing is a great metaphor, and you know your students, you might like to mix it up to allow other sorts of competitions like (say) sailing or racing or horseriding or football or cycling or shopping or flipping burgers or well you get the idea. There's a lot of 'spacemen' games out there and not every student is a geek at heart.

Yeah, you're right. I guess I envisioned the space-race thing only as the macro-game metaphor (that is, you wouldn't actually see it all that much except between challenges), while the challenges themselves would be filled with all those other things.

Thanks again guys for your advice.

One other thing: what do you think might be my chances of going part time and getting paid to create something like this under an educational research grant? I don't have any plans to do this, but it would be pretty cool if I could!

Submitted by lorien on Wed, 23/11/05 - 6:36 AMPermalink

quote:Originally posted by trevize79
I have absolutely no experience with "scripting" style languages like python (haven't even HEARD of ruby - talk about being out of the loop!) but I agree that XML can be a great way to store game data.

If you haven't heard of ruby you don't know what you've been missing out on [:)] IMHO it makes Python look like VB (yuk!). http://www.ruby-lang.org

quote:
I hadn't thought of this! Good idea, though I guess I'd like to really do a good chunk of the designing and coding myself for the hobby/experience of it.

I'd suggest stay away from managed c++ and c#. Completely non portable and I've heard real horror stories from people using managed directx.

If automatic memory management is what you're after use reference counted smart pointer template classes. You can find some in Boost http://boost.org .

I don't know your background, if it isn't comp-sci I suspect you would probably have to have some people with computing degrees on the project to be considered for a govt grant. But I may be wrong too.

Submitted by Dragoon on Wed, 23/11/05 - 8:42 PMPermalink

Flash *really sucks* for anything other than adding interaction to pretty animations (just look up some game coding faqs / tuts in it and you'll see why).

I would recommend using PyGame - http://www.pygame.org/news.html

Python is far superior to Flash, and it has support for game controllers, and is very fast to get going with.

One of our programmers here learnt it and made a multiplayer strategy/puzzle game with it in a day.

*And* PyGame is free :-P

Edit: and far superior to Ruby as well ;-)

Submitted by mcdrewski on Wed, 23/11/05 - 10:52 PMPermalink

*fight! fight! fight!*

:)

quote:
One other thing: what do you think might be my chances of going part time and getting paid to create something like this under an educational research grant?

I have a feeling you'll spend more time researching and applying for the grant than you will developing the game :)

Submitted by lorien on Wed, 23/11/05 - 11:35 PMPermalink

The Ruby SDL bindings are

RubySDL http://www.kmc.gr.jp/~ohai/rubysdl.en.html I think this is a fairly plain wrap of SDL

RubyGame http://rubygame.seul.org/ Similar to PyGame

RUDL http://sourceforge.net/projects/rudl A very rubyfied wrap of SDL.

As you can see from Dragoon's comments there's a friendly sort of teasing war between Python and Ruby fans that crops up from time to time [:)]

Things going for python:

  • better english docs
  • more users
  • faster execution times
  • probably better realtime response (uses ref counting and generational gabage collection)

Things going for ruby:

  • much cleaner language. Very pure OO. Lovely syntax and very powerful- a bit like a readable kind of Perl crossed with LISP and Smalltalk.
  • easier to extend in C
  • much smaller. Python is huge and (imho) bloated

I've given up on both for my work. Neither of them handles native threads properly- Ruby not at all, and Python has a nasty global interpreter mutex i.e. only 1 thread can use Python at a time.

Also there are quite a few pitfalls related to C++ exceptions and scripting languages written in C. These can byte if you're developing extensions in C++. Python however is written in a much more modern dialect of C, and can be re-compiled with a C++ compiler. C++ compilers just barf if you try to compile the Ruby source.

For this game you're talking about either would be fine.

Off topic, but what turned me from Python to Ruby was the largest April Fools joke the net has ever seen. Guido Van Rossum and Larry Wall (Python and Perl authors) made a really nasty hoax hybrid of the 2 languages called Parrot (which has become the name of the Perl6 VM). O'Reily press got involved and had the cover of "Programming in Parrot" up on their website. It hit slashdot, and pretty well everyone was completely fooled and disgusted. Made a lot of people jump ship to Ruby [:)]

Submitted by trevize79 on Thu, 24/11/05 - 12:16 AMPermalink

quote:"I'd suggest stay away from managed c++ and c#. Completely non portable and I've heard real horror stories from people using managed directx.

I understand what you mean about non-portability, but:
- isn't C# going to have more influence over time?
- much as I admire Linux, your average teacher has a default laptop running default WindowsXP and nothing else.

What happened in this horror story?

quote:If automatic memory management is what you're after use reference counted smart pointer template classes. You can find some in Boost http://boost.org .

Admittedly, I was keen on using C# because I wanted to get completely away from C++ and into something more clean that I hadn't tried. A garbage collector is also in Java I guess, but that has other issues.

quote:I don't know your background, if it isn't comp-sci I suspect you would probably have to have some people with computing degrees on the project to be considered for a govt grant. But I may be wrong too."

I do have a Computer Systems Engineering degree and a fair bit of experience in C++.

BTW guys I had a brief look at PyGame and it seems pretty neat, though I'd need to learn a fair bit of Python first. I just used to get quite concerned about languages that look like scripts because they didn't seem "pedantic" enough when it came to defining variables, etc. It seemed like they let you get away with too much.

Submitted by lorien on Thu, 24/11/05 - 2:03 AMPermalink

quote:Originally posted by trevize79

I understand what you mean about non-portability, but:
- isn't C# going to have more influence over time?

I really hope not!
There is Mono (open source C#), but it's slow and of course doesn't support many of the MS APIs.
quote:
- much as I admire Linux, your average teacher has a default laptop running default WindowsXP and nothing else.

That's what VSSEC were saying at first, then they started asking about running the programs on a Mac. They have been looking into windoze emulators for the mac to run it now... Best to just design to be portable in the first place imho (unless there's a really good reason not to). Also OS choices in education are very different in different parts of the world.

quote:
What happened in this horror story?

Lots and lots and lots of garbage collector issues [:)] Some of my students consider "Managed DirectX" to be a swear word now.

quote:
BTW guys I had a brief look at PyGame and it seems pretty neat, though I'd need to learn a fair bit of Python first. I just used to get quite concerned about languages that look like scripts because they didn't seem "pedantic" enough when it came to defining variables, etc. It seemed like they let you get away with too much.

Scripting in python or ruby feels like driving without you hands on the wheel for a while, then you get used to it. That's how it was for me at any rate.

Submitted by Dragoon on Thu, 24/11/05 - 9:52 PMPermalink

quote:Originally posted by lorien

The Ruby SDL bindings are

RubySDL http://www.kmc.gr.jp/~ohai/rubysdl.en.html I think this is a fairly plain wrap of SDL

RubyGame http://rubygame.seul.org/ Similar to PyGame

RUDL http://sourceforge.net/projects/rudl A very rubyfied wrap of SDL.

As you can see from Dragoon's comments there's a friendly sort of teasing war between Python and Ruby fans that crops up from time to time [:)]

Yes, true, but Ruby is nowhere near as mature as Python. Python is used in many real world, large scale, applications - such as Nuclear Simulations at Los Alamos, Enterprise Web Development through Zope, NASA, is used in countless commercial games (eg Battlefield 2, Civ 4), including MMOGs, among many others.

quote:Originally posted by lorien
Things going for python:

  • better english docs
  • more users
  • faster execution times
  • probably better realtime response (uses ref counting and generational gabage collection)

Things going for ruby:

  • much cleaner language. Very pure OO. Lovely syntax and very powerful- a bit like a readable kind of Perl crossed with LISP and Smalltalk.
  • easier to extend in C
  • much smaller. Python is huge and (imho) bloated

Ruby is not easier to extend than Python - just use SWIG or Boost. With SWIG (my choice) no extra code is needed, only a one off configuration of SWIG. Only the default installation of Python is large (not bloated) - it comes with many, many useful modules. Python is available for Series 60 (and other Symbian) mobile phones (ie small), and PyGame will "freeze" your Python code down to an exe so you don't need to distribute the lot (it includes only what you need to run the game) - a few MB or so (they don't have to install Python or PyGame). Ie your users will install your game, not Python, PyGame, then your game.

Language wise I find that Ruby looks like Python, intermingled with Perl (yuck!) and TCL (yuck!). It's syntax is unnecessarily complex.

If you want tiny and trivial to extend in C/C++ go for Lua.

Hehe, your turn Lorien :-P On a more serious note though, I haven't seen any feature of Ruby that would make me want to use it over Python. For most Ruby people I have spoken to, it boils down to a matter of preference for the Ruby syntax.

Submitted by Dragoon on Thu, 24/11/05 - 10:00 PMPermalink

quote:Originally posted by trevize79

quote:"I'd suggest stay away from managed c++ and c#. Completely non portable and I've heard real horror stories from people using managed directx.

I understand what you mean about non-portability, but:
- isn't C# going to have more influence over time?
- much as I admire Linux, your average teacher has a default laptop running default WindowsXP and nothing else.

What happened in this horror story?

quote:If automatic memory management is what you're after use reference counted smart pointer template classes. You can find some in Boost http://boost.org .

Admittedly, I was keen on using C# because I wanted to get completely away from C++ and into something more clean that I hadn't tried. A garbage collector is also in Java I guess, but that has other issues.

quote:I don't know your background, if it isn't comp-sci I suspect you would probably have to have some people with computing degrees on the project to be considered for a govt grant. But I may be wrong too."

I do have a Computer Systems Engineering degree and a fair bit of experience in C++.

BTW guys I had a brief look at PyGame and it seems pretty neat, though I'd need to learn a fair bit of Python first. I just used to get quite concerned about languages that look like scripts because they didn't seem "pedantic" enough when it came to defining variables, etc. It seemed like they let you get away with too much.

For your purposes, Managed C++ or C# will involve a much higher learning curve and development time than PyGame (Python can be learnt in half a day by an experienced programmer). This is mostly from the DirectX point of view. New versions do not include any 2D code, you need to set up flat sprites in 3D and use an orthogonal camera, which isn't trivial to learn if you are new to DirectX. PyGame and other similar libraries on the other hand do that all for you, and give you an easy to use API. The DirectInput API is also not that trivial, neither is sound.

Scripting languages are inherently more stable and quicker to develop with (and easier to learn for non-programmers), but are limited by performance (and memory usage - its higher). However for the games you are talking about you should have no problem with either on any computer 5 years old or newer.

Edit: PyGame also runs on Windows, Mac and a variety of Unix platforms. This could be important as there are quite a few schools starting to use the Mac these days.

Submitted by lorien on Thu, 24/11/05 - 10:18 PMPermalink

IMHO people who call python more mature than ruby haven't looked at ruby hard enough [:)] It's been around since 1993.

And python is a nasty mess of OO and procedural paradigms. And as for using that bloody self member everywhere... [;)]

I say ruby is easier to extend, I know about swig and boost. Ruby is easy to extend without using extra libs or wrapper generators, and it doesn't need shadow classes at all (and never has).

Really it's just personal preference, and mine is Ruby. The syntax is way cleaner than Perl, but just as powerful, but you don't have to do the crazy stuff (ruby is an amazing metaprogramming language).

Ruby is getting really big right now with Ruby on Rails http://www.rubyonrails.org/ and it's been much bigger than python in Japan for years.

People start being productive with either after a couple of days of playing.

Submitted by poser on Fri, 09/12/05 - 3:38 AMPermalink

Hi Trevize79 I will send you a personal message but I thought I would also post here. I do some windows games dev as a hobby and am also studying a part time teaching diploma and working as a C# developer.

Here is a link to a C# example just follow the instructions (http://members.iinet.net.au/~lchu/). Also, you will need a 3d graphics card as this is a 3d example. It is written entirely in C#.NET and DirectX for Managed Code. Let me know if want any help - I can also do some simple 2d stuff if you want.

Regards,
Mark

Posted by trevize79 on

I'm writing to see if there is any interest or if anyone could give me some feedback on an idea I have to develop a game for the middle school classroom (that is, years 7, 8 and 9).

WHAT IS IT?

The idea is for a fast-paced combination of quizzes and action challenges, particularly for use in those final classes of the day when attention spans start to fall away!

I envision that the teacher will be able to configure the game (with custom questions, etc.) on his/her laptop, then run it on a projector or tv in the classroom. The students are divided into four teams, and they play the game with four USB gamepads plugged into the laptop.

The game will flow quickly from familiar TV-quiz-show simulations ("Who Wants To Be A Millionaire", etc.) to WarioWare-style quick challenges, to short platform or puzzle sequences, even to physical challenges (eg. "the first to run around the room, then come back and press the X button wins").

All these challenges form part of an ongoing competition between the teams, who are represented as different space races trying to reach a particular planet. This competition continues across lessons, and succeeding in the challenges means that a student can buy boosters or special skills for his/her ship.

HOW IS IT TO BE DONE?

I am thinking C# and Managed DirectX. I have used C++ to develop 2D games from very basic graphics engines before. I am not sure if I would have time to complete this task alone. The game is unlikely to need 3D.

MONEY?

I'm a teacher and am after something to use in my classroom, but the product could perhaps be sold to schools or individual teachers. I want it to be easy for a teacher to install, run, and to enter his/her own questions.


Submitted by souri on Tue, 22/11/05 - 2:50 AMPermalink

Since you're not needing 3D, have you thought about doing this in Flash? It might be a little less work than coding a dedicated application for it, and Flash seems more than capable of doing the kind of games you're after. However, I'm not sure how Flash interacts with USB gamepads or if you could use multiple gamepads. You'll have to look that up.

My second choice would be to maybe look into [url="http://www.gamemaker.nl/"]Gamemaker[/url]. You can whip up games pretty quick in that once you've got a handle on how it does things. It'll be much easier than coding from scratch I think.

Submitted by lorien on Tue, 22/11/05 - 6:01 AMPermalink

I'm no flash guy, but can't you write extensions (wrong word I'm sure) for it in C++? That way you could do the gamepad thing if flash doesn't support it natively.

If you want to do the whole thing in C++, have a look at SDL http://libsdl.org that way you could make it run on Mac/Linux boxes too. There are tons of libs built on top of SDL, just follow the libraries link on the main page.

You might consider languages like ruby and python with the SDL extensions too. Certainly easier than C++, and more powerful than GameMaker (and imho flash).

XML is probably a good way to store an extendable list of questions. Have a look at http://tinyxml.sourceforge.net

Also you should ask comp-sci depts at unis if they could make it into a student project. There are whole and half year software engineering project subjects, and lecturers are often on the look out for things for students to do (eg La Trobe comp-sci and the Vic Space Science Education Centre).

Submitted by mcdrewski on Tue, 22/11/05 - 9:46 AMPermalink

From a high-level design point of view, it sounds like there are three basic chunks that can be solved largely in isolation.

1) Choose and/or interface with your buzzer/gamepad
- Simplest solution would be one that supports 'button remapping' so that it can effectively type keys when buttons are pressed.
- Maybe even a cheap USB numeric keypad, a soldering iron and some robust pushbuttons?
- decent affordability will be your challenge I presume.

2) Choose a 'gameplay' solution which can display your questions or quizzes with whatever flash-bangism you want.
- Cheapest solution for prototyping is probably 'powerpoint' (or equivalent) plus some simple macros and a whiteboard for keeping score.
- Next best probably ruby/python + SDL/PyGame sort of stuff.
- Next best probably gamemaker or flash
- More complete solution would be your custom built game in C#/DX/whatever

3) Make it easy for other teachers to configure the game to their needs.
- this will depend on your answer to #2, unless you take lorien's suggestion and use some mediated middle-ground like XML (recommended)
- web page or an integrated 'for dummies' editor would be best, although it could be built last.

And Lorien's also right, your local IT or engineering department would probably love the chance - as long as you don't need it in a hurry.

Finally, while th space-race thing is a great metaphor, and you know your students, you might like to mix it up to allow other sorts of competitions like (say) sailing or racing or horseriding or football or cycling or shopping or flipping burgers or well you get the idea. There's a lot of 'spacemen' games out there and not every student is a geek at heart.

Submitted by trevize79 on Wed, 23/11/05 - 5:20 AMPermalink

Hi Souri. Thanks for your input!

quote:Originally posted by Souri

Since you're not needing 3D, have you thought about doing this in Flash? It might be a little less work than coding a dedicated application for it, and Flash seems more than capable of doing the kind of games you're after. However, I'm not sure how Flash interacts with USB gamepads or if you could use multiple gamepads. You'll have to look that up.

Actually I used to play around with Flash back when it was version 2 and 3, and, while I think it's great for low-bandwidth web-pages, I found it a real hassle to put in any intelligence apart from simple "skip to this frame" events. I am often astounded that people have the patience to turn out even moderately complex games on it. Perhaps this has become easier in the newer versions.

Certainly there would be huge advantages in using Flash, not the least of which is that teachers wouldn't have to download anything!

quote:My second choice would be to maybe look into [url="http://www.gamemaker.nl/"]Gamemaker[/url]. You can whip up games pretty quick in that once you've got a handle on how it does things. It'll be much easier than coding from scratch I think.

Actually I keep hearing about Gamemaker and how it is used in schools to help kids learn game design, so I am keen to investigate it. So far I haven't had the time.

Submitted by trevize79 on Wed, 23/11/05 - 5:26 AMPermalink

Lorien,

quote:Originally posted by lorien

I'm no flash guy, but can't you write extensions (wrong word I'm sure) for it in C++? That way you could do the gamepad thing if flash doesn't support it natively.
If you want to do the whole thing in C++, have a look at SDL http://libsdl.org that way you could make it run on Mac/Linux boxes too. There are tons of libs built on top of SDL, just follow the libraries link on the main page.

I think you're right that flash extensions for C++ (and probably C#) exist. Among other things, these would be very useful for doing fancy cutscenes in a game! I remember looking into SDL in my old job when working with a PS2 Linux Kit.

quote:You might consider languages like ruby and python with the SDL extensions too. Certainly easier than C++, and more powerful than GameMaker (and imho flash). XML is probably a good way to store an extendable list of questions. Have a look at http://tinyxml.sourceforge.net

I have absolutely no experience with "scripting" style languages like python (haven't even HEARD of ruby - talk about being out of the loop!) but I agree that XML can be a great way to store game data.

quote:Also you should ask comp-sci depts at unis if they could make it into a student project. There are whole and half year software engineering project subjects, and lecturers are often on the look out for things for students to do (eg La Trobe comp-sci and the Vic Space Science Education Centre).

I hadn't thought of this! Good idea, though I guess I'd like to really do a good chunk of the designing and coding myself for the hobby/experience of it.

Submitted by trevize79 on Wed, 23/11/05 - 5:34 AMPermalink

mcdrewski,

quote:Originally posted by mcdrewski

1) Choose and/or interface with your buzzer/gamepad
- Simplest solution would be one that supports 'button remapping' so that it can effectively type keys when buttons are pressed.
- Maybe even a cheap USB numeric keypad, a soldering iron and some robust pushbuttons?
- decent affordability will be your challenge I presume.

You're quite right - I was only thinking of this as my own invention, but if I intend to sell it to other teachers, this would be a major factor. I know that it's quite easy to find applications which will "button-remap" for infra-red/usb remote controls, so I'm sure the same is true for gamepads. Though less integrated, this would take out the need to fuss around with DirectInput or other things, I suppose.

quote:2) Choose a 'gameplay' solution which can display your questions or quizzes with whatever flash-bangism you want.
- Cheapest solution for prototyping is probably 'powerpoint' (or equivalent) plus some simple macros and a whiteboard for keeping score.
- Next best probably ruby/python + SDL/PyGame sort of stuff.
- Next best probably gamemaker or flash
- More complete solution would be your custom built game in C#/DX/whatever

This is a good list. As I said before, ruby/python is really not my bag, but I guess I could try to get into it. Gamemaker is now definitely on my list of things to investigate.

quote:3) Make it easy for other teachers to configure the game to their needs.
- this will depend on your answer to #2, unless you take lorien's suggestion and use some mediated middle-ground like XML (recommended)
- web page or an integrated 'for dummies' editor would be best, although it could be built last.

I'm not huge on dynamic HTML either, so I'd rather do up an integrated editor. XML could still be used of course.

quote:Finally, while th space-race thing is a great metaphor, and you know your students, you might like to mix it up to allow other sorts of competitions like (say) sailing or racing or horseriding or football or cycling or shopping or flipping burgers or well you get the idea. There's a lot of 'spacemen' games out there and not every student is a geek at heart.

Yeah, you're right. I guess I envisioned the space-race thing only as the macro-game metaphor (that is, you wouldn't actually see it all that much except between challenges), while the challenges themselves would be filled with all those other things.

Thanks again guys for your advice.

One other thing: what do you think might be my chances of going part time and getting paid to create something like this under an educational research grant? I don't have any plans to do this, but it would be pretty cool if I could!

Submitted by lorien on Wed, 23/11/05 - 6:36 AMPermalink

quote:Originally posted by trevize79
I have absolutely no experience with "scripting" style languages like python (haven't even HEARD of ruby - talk about being out of the loop!) but I agree that XML can be a great way to store game data.

If you haven't heard of ruby you don't know what you've been missing out on [:)] IMHO it makes Python look like VB (yuk!). http://www.ruby-lang.org

quote:
I hadn't thought of this! Good idea, though I guess I'd like to really do a good chunk of the designing and coding myself for the hobby/experience of it.

I'd suggest stay away from managed c++ and c#. Completely non portable and I've heard real horror stories from people using managed directx.

If automatic memory management is what you're after use reference counted smart pointer template classes. You can find some in Boost http://boost.org .

I don't know your background, if it isn't comp-sci I suspect you would probably have to have some people with computing degrees on the project to be considered for a govt grant. But I may be wrong too.

Submitted by Dragoon on Wed, 23/11/05 - 8:42 PMPermalink

Flash *really sucks* for anything other than adding interaction to pretty animations (just look up some game coding faqs / tuts in it and you'll see why).

I would recommend using PyGame - http://www.pygame.org/news.html

Python is far superior to Flash, and it has support for game controllers, and is very fast to get going with.

One of our programmers here learnt it and made a multiplayer strategy/puzzle game with it in a day.

*And* PyGame is free :-P

Edit: and far superior to Ruby as well ;-)

Submitted by mcdrewski on Wed, 23/11/05 - 10:52 PMPermalink

*fight! fight! fight!*

:)

quote:
One other thing: what do you think might be my chances of going part time and getting paid to create something like this under an educational research grant?

I have a feeling you'll spend more time researching and applying for the grant than you will developing the game :)

Submitted by lorien on Wed, 23/11/05 - 11:35 PMPermalink

The Ruby SDL bindings are

RubySDL http://www.kmc.gr.jp/~ohai/rubysdl.en.html I think this is a fairly plain wrap of SDL

RubyGame http://rubygame.seul.org/ Similar to PyGame

RUDL http://sourceforge.net/projects/rudl A very rubyfied wrap of SDL.

As you can see from Dragoon's comments there's a friendly sort of teasing war between Python and Ruby fans that crops up from time to time [:)]

Things going for python:

  • better english docs
  • more users
  • faster execution times
  • probably better realtime response (uses ref counting and generational gabage collection)

Things going for ruby:

  • much cleaner language. Very pure OO. Lovely syntax and very powerful- a bit like a readable kind of Perl crossed with LISP and Smalltalk.
  • easier to extend in C
  • much smaller. Python is huge and (imho) bloated

I've given up on both for my work. Neither of them handles native threads properly- Ruby not at all, and Python has a nasty global interpreter mutex i.e. only 1 thread can use Python at a time.

Also there are quite a few pitfalls related to C++ exceptions and scripting languages written in C. These can byte if you're developing extensions in C++. Python however is written in a much more modern dialect of C, and can be re-compiled with a C++ compiler. C++ compilers just barf if you try to compile the Ruby source.

For this game you're talking about either would be fine.

Off topic, but what turned me from Python to Ruby was the largest April Fools joke the net has ever seen. Guido Van Rossum and Larry Wall (Python and Perl authors) made a really nasty hoax hybrid of the 2 languages called Parrot (which has become the name of the Perl6 VM). O'Reily press got involved and had the cover of "Programming in Parrot" up on their website. It hit slashdot, and pretty well everyone was completely fooled and disgusted. Made a lot of people jump ship to Ruby [:)]

Submitted by trevize79 on Thu, 24/11/05 - 12:16 AMPermalink

quote:"I'd suggest stay away from managed c++ and c#. Completely non portable and I've heard real horror stories from people using managed directx.

I understand what you mean about non-portability, but:
- isn't C# going to have more influence over time?
- much as I admire Linux, your average teacher has a default laptop running default WindowsXP and nothing else.

What happened in this horror story?

quote:If automatic memory management is what you're after use reference counted smart pointer template classes. You can find some in Boost http://boost.org .

Admittedly, I was keen on using C# because I wanted to get completely away from C++ and into something more clean that I hadn't tried. A garbage collector is also in Java I guess, but that has other issues.

quote:I don't know your background, if it isn't comp-sci I suspect you would probably have to have some people with computing degrees on the project to be considered for a govt grant. But I may be wrong too."

I do have a Computer Systems Engineering degree and a fair bit of experience in C++.

BTW guys I had a brief look at PyGame and it seems pretty neat, though I'd need to learn a fair bit of Python first. I just used to get quite concerned about languages that look like scripts because they didn't seem "pedantic" enough when it came to defining variables, etc. It seemed like they let you get away with too much.

Submitted by lorien on Thu, 24/11/05 - 2:03 AMPermalink

quote:Originally posted by trevize79

I understand what you mean about non-portability, but:
- isn't C# going to have more influence over time?

I really hope not!
There is Mono (open source C#), but it's slow and of course doesn't support many of the MS APIs.
quote:
- much as I admire Linux, your average teacher has a default laptop running default WindowsXP and nothing else.

That's what VSSEC were saying at first, then they started asking about running the programs on a Mac. They have been looking into windoze emulators for the mac to run it now... Best to just design to be portable in the first place imho (unless there's a really good reason not to). Also OS choices in education are very different in different parts of the world.

quote:
What happened in this horror story?

Lots and lots and lots of garbage collector issues [:)] Some of my students consider "Managed DirectX" to be a swear word now.

quote:
BTW guys I had a brief look at PyGame and it seems pretty neat, though I'd need to learn a fair bit of Python first. I just used to get quite concerned about languages that look like scripts because they didn't seem "pedantic" enough when it came to defining variables, etc. It seemed like they let you get away with too much.

Scripting in python or ruby feels like driving without you hands on the wheel for a while, then you get used to it. That's how it was for me at any rate.

Submitted by Dragoon on Thu, 24/11/05 - 9:52 PMPermalink

quote:Originally posted by lorien

The Ruby SDL bindings are

RubySDL http://www.kmc.gr.jp/~ohai/rubysdl.en.html I think this is a fairly plain wrap of SDL

RubyGame http://rubygame.seul.org/ Similar to PyGame

RUDL http://sourceforge.net/projects/rudl A very rubyfied wrap of SDL.

As you can see from Dragoon's comments there's a friendly sort of teasing war between Python and Ruby fans that crops up from time to time [:)]

Yes, true, but Ruby is nowhere near as mature as Python. Python is used in many real world, large scale, applications - such as Nuclear Simulations at Los Alamos, Enterprise Web Development through Zope, NASA, is used in countless commercial games (eg Battlefield 2, Civ 4), including MMOGs, among many others.

quote:Originally posted by lorien
Things going for python:

  • better english docs
  • more users
  • faster execution times
  • probably better realtime response (uses ref counting and generational gabage collection)

Things going for ruby:

  • much cleaner language. Very pure OO. Lovely syntax and very powerful- a bit like a readable kind of Perl crossed with LISP and Smalltalk.
  • easier to extend in C
  • much smaller. Python is huge and (imho) bloated

Ruby is not easier to extend than Python - just use SWIG or Boost. With SWIG (my choice) no extra code is needed, only a one off configuration of SWIG. Only the default installation of Python is large (not bloated) - it comes with many, many useful modules. Python is available for Series 60 (and other Symbian) mobile phones (ie small), and PyGame will "freeze" your Python code down to an exe so you don't need to distribute the lot (it includes only what you need to run the game) - a few MB or so (they don't have to install Python or PyGame). Ie your users will install your game, not Python, PyGame, then your game.

Language wise I find that Ruby looks like Python, intermingled with Perl (yuck!) and TCL (yuck!). It's syntax is unnecessarily complex.

If you want tiny and trivial to extend in C/C++ go for Lua.

Hehe, your turn Lorien :-P On a more serious note though, I haven't seen any feature of Ruby that would make me want to use it over Python. For most Ruby people I have spoken to, it boils down to a matter of preference for the Ruby syntax.

Submitted by Dragoon on Thu, 24/11/05 - 10:00 PMPermalink

quote:Originally posted by trevize79

quote:"I'd suggest stay away from managed c++ and c#. Completely non portable and I've heard real horror stories from people using managed directx.

I understand what you mean about non-portability, but:
- isn't C# going to have more influence over time?
- much as I admire Linux, your average teacher has a default laptop running default WindowsXP and nothing else.

What happened in this horror story?

quote:If automatic memory management is what you're after use reference counted smart pointer template classes. You can find some in Boost http://boost.org .

Admittedly, I was keen on using C# because I wanted to get completely away from C++ and into something more clean that I hadn't tried. A garbage collector is also in Java I guess, but that has other issues.

quote:I don't know your background, if it isn't comp-sci I suspect you would probably have to have some people with computing degrees on the project to be considered for a govt grant. But I may be wrong too."

I do have a Computer Systems Engineering degree and a fair bit of experience in C++.

BTW guys I had a brief look at PyGame and it seems pretty neat, though I'd need to learn a fair bit of Python first. I just used to get quite concerned about languages that look like scripts because they didn't seem "pedantic" enough when it came to defining variables, etc. It seemed like they let you get away with too much.

For your purposes, Managed C++ or C# will involve a much higher learning curve and development time than PyGame (Python can be learnt in half a day by an experienced programmer). This is mostly from the DirectX point of view. New versions do not include any 2D code, you need to set up flat sprites in 3D and use an orthogonal camera, which isn't trivial to learn if you are new to DirectX. PyGame and other similar libraries on the other hand do that all for you, and give you an easy to use API. The DirectInput API is also not that trivial, neither is sound.

Scripting languages are inherently more stable and quicker to develop with (and easier to learn for non-programmers), but are limited by performance (and memory usage - its higher). However for the games you are talking about you should have no problem with either on any computer 5 years old or newer.

Edit: PyGame also runs on Windows, Mac and a variety of Unix platforms. This could be important as there are quite a few schools starting to use the Mac these days.

Submitted by lorien on Thu, 24/11/05 - 10:18 PMPermalink

IMHO people who call python more mature than ruby haven't looked at ruby hard enough [:)] It's been around since 1993.

And python is a nasty mess of OO and procedural paradigms. And as for using that bloody self member everywhere... [;)]

I say ruby is easier to extend, I know about swig and boost. Ruby is easy to extend without using extra libs or wrapper generators, and it doesn't need shadow classes at all (and never has).

Really it's just personal preference, and mine is Ruby. The syntax is way cleaner than Perl, but just as powerful, but you don't have to do the crazy stuff (ruby is an amazing metaprogramming language).

Ruby is getting really big right now with Ruby on Rails http://www.rubyonrails.org/ and it's been much bigger than python in Japan for years.

People start being productive with either after a couple of days of playing.

Submitted by poser on Fri, 09/12/05 - 3:38 AMPermalink

Hi Trevize79 I will send you a personal message but I thought I would also post here. I do some windows games dev as a hobby and am also studying a part time teaching diploma and working as a C# developer.

Here is a link to a C# example just follow the instructions (http://members.iinet.net.au/~lchu/). Also, you will need a 3d graphics card as this is a 3d example. It is written entirely in C#.NET and DirectX for Managed Code. Let me know if want any help - I can also do some simple 2d stuff if you want.

Regards,
Mark