|
|||||||
| Introduction | News | Documentation | Development | Screenshots | Online Games | Downloads | Links |
| Project Description | Project History | ||||||
The History of The COG Engine by Steven M. Castellotti Background Many of us have a story like this, the following is my own. I remember the afternoon well. It was 1989, I was 11 years old, in the sixth grade, and wandering around my backyard thinking of what it was that I might want to do with the rest of my life. Most of my friends knew for certain that they wanted to be either the next Bo Jackson, or a professional dirt bike racer. But not me, I knew what I was good at. I loved to play video games. Playing video games was what I wanted to do after school; I would leave behind the boring conversations of my family after holiday dinners to run back to my Nintendo, still paused in my room. It was in the course of this stroll around my backyard one grey afternoon that I decided the only thing I wanted to do when I grew up was to spend my time playing and writing my own video games. Not long afterwards, I headed on over to my local library and began to search for books that might aid in the endeavor of my new dream career. It was there that I found How to Create Adventure Games, by Christopher Lampton (published by Franklin Watts, 1986). The book explained some of the basics behind creating a text-based adventure game, or what is now referred to as "interactive fiction." The book provided it's own example of a simple game, consisting of a handful of rooms and objects, and offered advice to the reader on how to imagine and map out their own adventure game. I was hooked from the very start, and it wasn't long before I had a posterboard covered with little boxes and arrows indicating the various rooms and locations of items and enemies of my own unique world. I had a problem however, because after the actual design phase of the game, the book delved into the details of programming, which was entirely new to me. After realizing I was in over my head, I put aside my game for a few years, though I would pick it up again from time to time to further develop a particular idea or puzzle. In the meantime, I began to learn the basics of programming my Commodore 64, and when I entered high school I traded up for a 486 PC. I taught myself how to program in Pascal, and eventually gave my video game another shot. I was hoping to turn the program into a "door game" for the BBS (Bulletin Board System) I ran at the time, but after running into a few tricky problems I once again had to put my game aside. I never forgot about my game however, and the storyline continued to change as I continued to change over the years. Creating that game sparked my interest in computers, and I carried that interest with me into college. As I started learning Java I briefly considered rewriting my video game once again, but I didn't feel the pull that I knew it would take see my work through until it was finished. By late freshman year I had discovered a yearning to travel. While visiting my roommate at his home in Puerto Rico the following winter break, an idea suddenly struck me. We were walking with his family around the streets of Old San Juan and I was taking pictures here and there of sites that interested me. We rounded a corner just before sunset when I spied a wooden dock extending out over the water, and I stopped to take a picture. The video game which had originated in the sixth grade took place on an island, and as I lifted the camera to my eye it occurred to me how very similar this dock looked to the way I pictured one in my game. As I released the shutter button, I realized that while I'm not a very impressive artist, I do know how to take a picture and modify it on the computer. I suddenly had the idea that I could take pictures of various places I visited which looked somewhat similar to the way I had pictured a particular scene of the game, and modify the picture to match my mind's eye. In the meantime I had heard a great deal about the Linux operating system, and learned all about the rationale behind its creation and licensing under the General Public License (GPL). I loved the whole idea and decided that I could rewrite my game, using the pictures from my trips, and make the whole thing Open Source. After thinking things over for awhile, I had another idea, which caused the foundation of this project. I would write the game engine in such a way that many different games could be created for it, without the creator having had any previous programming experience. Essentially, my goal was to create a project with which, had it been available back in the sixth grade, I could have completed my own video game. The COG Engine Project is Born I began the actual coding of the project's game engine the following year, with a group of friends, as part of our Software Engineering project. The first version of the Cycon Online Gaming Engine (so named because my original game in sixth grade was called the "Cycon Odyssey") used a set of programs to parse data out of specially-formatted text files (modeled after the filling out of a form), and ran as a Java applet. The most difficult task that I had to face was to find a way for a game writer to be able to tell the computer - without having to write actual code - how specific actions should take place. Setting up the game world was easy, but indicating what item would be needed to defeat which enemy and so on was somewhat tricky. I finally settled on the idea of a plain-English-based scripting language, which is now referred to as Cog Script. After finishing much of the engine, the next goal was to replace the text files and associated programs with a graphical development application, or the "CogDevApp." This was first attempted the following year (my senior year of college) as part of another school-related project, but that code base was dropped after it was decided that Java 1.1 was not sufficient for what I had in mind. The Engine itself had undergone a number of updates in the meantime, and a beta release was made. The new CogDevApp was written in Python/GTK+, and used Jython to convert data between the Java (COG Engine) and Python (CogDevApp) formats. After this program was completed, full documentation was written, and the project finally enjoyed it's 1.0 release on January 27, 2002, having spent over three years in development. The Cog Engine has since undergone a complete rewrite. New development is focused on adding a completely graphical interface to the Engine, as well as other nice features such as text-to-speech. |