Welcome to the OLPC KAGE: 2D Game Development Kit for XO
This project will be a big attempt to have an alternative 2D Game Development Kit for XO.
This will need a port of the Engine, Source Editor, and the Tools used in KAGE.
Why This Project?
- Game Development as learning tool - Many have proven programming games stimulates creative thinking of an individual honing oneself better at programming and real-life decision making.
- XO needs alternative - Other toolkit are not primarily designed for game development at a minimal scale (read more at Why Provide Alternative).
- Challenge to developers - KAGE has been proven to be as easy-to-learn basing from users of ages 16 to 18. A challenge to the developers is to make it more easy for ages lower than 16 to learn game development.
- KAGE is young - yes, KAGE is 3 years old (as of Nov 2008) but it is this being young that made to integrate some innovative designs, listed under KAGE's Distinctive Designs.
- KAGE is being re-designed - KAGE developers has seen some design flaw. Re-designing is the only way to fix the flaw. And having XO as a new platform to be considered, this design should make the engine more user-friendly and machine-friendly.
Why Provide Alternative?
All other alternative technologies has proven their worth. This section will discuss the cons on why it is not a better alternative when it comes to XO.
- Python - The Python Language is mostly the primary option but this project will provide an alternative to PyGame, where a programming language will be more of C/C++.
- Flash - because of the high resolution & low CPU of the XO-1, performance of Flash content that have complex vector images and high animations/transitioning effects as well as images that get scaled up can get sluggish.
- Java - the Java Development Kit is a massive addition to XO. XO needs something smaller, lighter game development kit.
From KAGE Website:
- KAGE is a Free Software and Open Source Game Development Kit suitable for teaching 2D game programming.
- The end goal of the project KAGE is to have a "Flash"-like educational gaming platform (though need-not to be in vector) for Windows, GNU/Linux, MacOS, and Symbian where any newbie can learn how to make his game/animation etc.
- A lot of work has been made and a lot more is to be done. It might need to hire programmers to make an engine for Symbian and MacOS, then some in-house testers for stability among these platforms.
These distinctive designs did not come originally from KAGE developers. These features have already been implemented on other technologies, which were adapted to KAGE which makes KAGE unique as a competitive alternative 2D Game Development for XO.
Zips source file - cleaning up the source file (KS, KH) and zips it up as KONSL, which will eliminate further pre-processing everytime the the source is run.
- Zipping the source makes the (pseudo) compiled code very portable to supported operating system and platform.
- Easy decompiling of (pseudo) compiled codes is not an issue, we have to teach the child the importance of Free Software / Open Source from the very start.
- Zipping the cleaned up code decreases the file size of the game in case of distribution.
Script file over XML file - placing a map definition (so does an entity definition) on a script file, which is more understood to a debugging programmer rather than placing it on an XML file.
- XML is meant for data, not for logic. Many programmers have problems dealing with XML.
- Map/Entity file contains logical data for triggering events.
- Game engine needs extra logical data to allow the user to do more complicated stuff.
Need for just one Runtime engine - associating KS, KH and KONSL file to a single EXE (executable binary) file (like Flash) to avoid multiple copies of the game engine on one computer.
- Most of other game engine uses one EXE per created game.
- Although, Java requires at least one JRE for Java Games to run, setting class paths is an issue.
Easy setting of paths - KAGE has pre-defined paths; either (or both) KAGE's path or the executed script's path so users don't have to worry about it.
- In Java, you have to deal with specifying class paths.
- No use of setting (class) paths for plugin; KAGE is a monolithic engine, all basic functionalities of a game has been built into the engine.
Krixware KonsolScript Engine, aka Project:Quixie,is the cross-platform enabling engine of KAGE. This Work-In-Progress engine runs on Windows and GNU/Linux (successfully tested on PC using Ubuntu, SliTaz and on EEE using Xandros).
It is currently written in FreeBASIC. A language whose compiled binaries was not yet tested to run under XO.
This could mean that a new engine might be needed and probably be implemented in C++. There are lots of other beginners gaming toolkit waiting to be used in SourceForge.
KonsolScript Editor, is a simple editor. It only needed a syntax highlighting component (Scintilla).
This means than a new editor will be needed for use in XO. But the engine is designed to be simple that a single call on the engine (passing the current file as argument) will be enough to run the script.
As of now, the mostly used tool in making games in KAGE is the editor and the engine, which seems to be enough for beginners to make their games.
But most of KAGE users' age ranges from 16 to 25. XO users ranges from 6 to 16. This would require some utilities to be developed.
Games should be fun! Almost all of them require learning and honing some set of skills; logical, coordination, mathematical, etc. They are an important pedagogical tool that engage the child in a more informal setting. This category includes activities and ideas for games.