What is SGDK2?

To put it briefly, SGDK2 is an integrated development environment designed for developing multi-layer scrolling tile-based games. It includes integrated map editor, graphics editor, code editor (although coding is not required), and much more. But rather than rely on this brief description, I encourage you to look around at the other existing explanations of what SGDK2 is:

Seeking Assistance

Although SGDK2 is an open source, I tend to work on the core code alone. That being said, there are a number of possible projects related to SGDK2 that aren't part of the core code where I could use a lot of help. If you'd like to participate, post a message on the forums, or email me.

  • Library Content - Always looking for some spectacular graphics, music or other importable objects to include in an SGDK2 library.
  • Documentation / Tutorials
  • Portability - Do you know how to develop for Linux or embedded systems? I'm interested in making it possible to compile SGDK2 games for systems like Nintendo DS, and interested in making SGDK2 run natively under Linux if anyone is interested and capable of working on these projects (I know very little about them myself).


About the Author


Ben Juggling

Although I was born in Moorhead, Minnesota on January 2 1975, my family moved to Vienna, Austria when I was 2, so much of my early life was spent in a German speaking country. I took an early interest in computers while I was living there when I was about 5. The American International School had Apple ][ computers, and my dad was a teacher and had "connections" so I could learn a bit about them and see that they can be programmed. I was immediately entranced, but had to wait 4 or 5 long years before I would end up with a computer of my own to toy with in my free time. But finally when I was 9, then living in Fargo, ND, I got a Franklin Ace 2100, which was an Apple ][ compatible with one 5.25-inch floppy disk drive. I spent years playing on that, teaching myself Applesoft BASIC and making many little games. Of course I enjoyed playing too. Two favorites that come to mind are Aztec and Legacy of the Ancients. (I even managed recently to find an Apple ][ emulator and disk images of these games so I can play them on my current PC if I ever get nostalgic - now in color!)

I never owned a game system of my own until I was over 20 and living on my own, but I managed to get a hold of a number of computer games, and I did get to enjoy an occasional game of Super Mario Bros. while visiting friends. I found that I really enjoyed games that involved a lot of exploration. It has taken a while to identify just what it is about a game that I enjoy most, but I believe that sums it up. This led me to begin creating games of my own. After I got beyond creating some of the simpler games like Tic Tac Toe and Blackjack, I tried my hand at some more RPG-like games and finally found my way into side-scrolling platform and other 2D scrolling games. Those were the games I had always dreamed of making. They weren't very practical on the old Franklin due to its limited video performance and features, but when I got my hands on an Amiga 500 and AMOS when I was about 15, I managed to create my first real scrolling game: Robotic Rebellion.

So over my summer vacations, and in my free times in the evenings during high school at West Ottawa High School in Holland, MI, I would continue working on game development part of the time and playing games for another part. A couple of my favorite games on the Amiga 500 involved a whole lot of exploration. I spent many many hours playing (and cursing) the graphical implementation of Moria, and also greatly enjoyed Antepenult. As for game development on the Amiga, I went on to create a game called Ancient Arena of Power in which you spend the first half of the game building up a character with RPG style stats and weapons, and the second half working your way through 3D mazes. My ultimate achievement on the Amiga 500, however, was TechnoVenture (see review). The inclusion of a reasonably complete map editor began my interest in distributing game editors in general.

After a few releases on the old Amiga 500, and some mildly successful attempts at releasing Shareware, I took up the PC platform, and, among other things, re-created TechnoVenture for PC and released it as Freeware. This was just a few months after graduating from Hope College and moving to Minneapolis where I began my career as a software developer with a company named Fourth Shift (now SoftBrands). The PC version of TechnoVenture was trully a scrolling game whereas the Amiga version only switched views when you transferred from one screen to another. I also introduced the ability to walk up slopes in this version. After this DOS rewrite in Borland C++, I also rewrote it for Windows in Visual C++. Of course the new versions also came with full-featured map editors (written in Visual Basic). After this round of rewrites, I decided I wanted to start a new game, but an even bigger and better one, or maybe many smaller games. But for this I was going to need a better game design environment.

So to support my future efforts, I began work on an ActiveX control to wrap DirectX for easy use from Visual Basic 6. By this time, my work as a professional software developer and my work at home complemented each other nicely. I was using Visual Basic and C++ in both environments, and tricks learned in one sometimes helped me in the other. Eventually I finished and released BMDXCtls as a stand-alone component to help others also interested in using DirectX from Visual Basic. I included a complete help file with context sensitive help for every property. Then I began work on the Scrolling Game Development Kit itself (in VB6). I worked on and released many versions of this first iteration of the Scrolling Game Development Kit for many years. During these 5 years and ~15 releases from 2000 to 2005, I managed to complete only 1 "real" game: Rolly the Purple Ball. However, there were a number of smaller games, and many other projects were submitted by other users of the kit (posted on the project listing).

I took advantage of much that I had learned about side-scrolling game architecture from TechnoVenture in the design of the Scrolling Game Development Kit, merging some ideas from the map editor with some ideas from the runtime engine to create a single integrated program for designing and playing of a wider range of games. I still had a particular interest in side-scrolling platform games so I intentionally kept the focus of this kit on these types of 2-D games. I released this as open source with the realization that I enjoyed the interaction with other game developers more than the measly few dollars that Shareware registrations had provided. However, as it turned out, I wasn't getting much time to work on my own games, and was enjoying working on the kit itself, and working with the community of game developers who were using it to create games. I really enjoy getting all these free editable games :). One of the more interesting developments was when Guildhall picked up on Scrolling Game Development Kit for a couple years, and used it in their level design courses. Many interesting projects came out of this. So a number of factors were pushing me in the direction of a total re-write of the Scrolling Game Development Kit instead of finally beginning work on my big game:

  • Microsoft's new .NET platform provided some very interesting features that I wanted to take advantage of in a game engine:
    • Ability to compile and run code at runtime would eliminate the need for scripting, opting instead for real high-performance full-featured compiled code.
    • This and Managed DirectX would allow me to integrate all my code into one application instead of having separate DLLs for wrapping DirectX and Scripting support.
    • The power of managed code would make development much quicker and easier. The graphics editor in particular could gain a lot from a rewrite in managed code using GDI+.
  • Although I had learned something about architecting scrolling games from TechnoVenture, I learned significantly more in the process of working on the first iteration of Scrolling Game Development Kit, and a complete rewrite would allow me to finally correct all the major design issues I had noticed in the process.
  • My limited time and skills with drawing graphics made it difficult for me to develop large complete games on my own, but I found that I could be very productive working on this game engine, and had much more to contribute before settling down to work on a game. People seemed to appreciate the work I was doing with the kit, so it seemed worthwhile to continue that as long as I had more ideas.

So I began work on Scrolling Game Development 2, a total rewrite from the ground up in C# ("See Sharp"). I released the first pre-alpha with the mostly-completed graphics editor only on November 3, 2005. And after a number of alpha and beta releases, a little over two years later, I released the first offical 2.0 version at the end of December 2007. I'm quite happy with how it has turned out, and I hope that people will see the new power provided in this release and the advantages it offers even if it is very different and maybe even a little more complex in some aspects.

Philosophy and Miscellaneous Thoughts

On Computer Games

I believe computer games are a wonderful multi-media art form in which a game developer or artist can express ideas in writing/storytelling, visual arts and music. It's an art form even more versatile than film because films are restricted by time and generally don't deal much with written language. They also don't allow the viewer/player as much participation, which is an important aspect of this art form. Without viewer participation, the idea of exploration is lost. I know of no other medium that allows the kind of exploration purveyed by computer games. In designing the Scrolling Game Development Kit, I made sure to retain support for enormous maps, billions of pixels in size, because I want huge worlds to explore.

On Open Source Software

I'm sure plenty of people worry about intellectual property, and I too get nervous when I read about backspaceware; people blatantly stealing others' work and calling it their own. However, I still hold out hope that open source software's benefits outweigh the costs and risks. I hope that the GPL will protect authors like myself from such abuse (assuming it can be identified when it occurs). And I hope that if the occurrence of such abuse is so low that it can't be detected, then it means that more people are benefitting from the original version that I'm working on than from a ripoff. I hope we can all respect and support each other's creativity. To this end, I have made it very easy to properly credit one's work in SGDK2 by automatically importing the credits from any template file imported into a project. I hope users will do their part be reviewing the credits of their games to make sure they're complete and accurate.

I understand that much of the attraction of some games is the ability to hide information, and make players work for it, which is hard or impossible to do with open source projects, so what is my philosophy on open source projects you may ask? I myself will probably make all my games open source, in the near future (if I make any), but I have allowed for a section of binary-only games in the new project listing to honor worthy games that want a little more protection of their secrets. I would point out, however, that distributing a game with the ability to edit levels would greatly improve its replayability and could yield a much larger project with contributions from many users. This may not be as practical for an RPG, but I bet there's some great platformer waiting to be created and then edited by untold hoardes of fans. One just has to come up with an interesting framework and samples.

On Juggling

Yes, that's me juggling in the picture above. I learned to juggle scarves and beanbags in 6th grade gym class. I was naturally attracted to practice it some more, so I continued practicing with tennis balls over the summer until I could juggle pretty much as long as I wanted (until my arms got tired). After a number of years I met someone else who juggled and was into juggling clubs and torches. I practiced a bit with his juggling clubs and in my early 20s got a set of my own juggling clubs to practice with. After a year or two of practicing those, I decided to get myself a set of torches, and I've been juggling torches for various family occasions (rarely) for the past 5 years or so. I still tend to drop a torch now and then, so I try not to juggle on piles of kerosene-soaked dry leaves too often, but I can keep it going pretty well, and double-flip a torch pretty regularly without dropping anything.

Somewhere in there I also started practicing juggling 4 balls. I can manage 4 for a short while, but it is significantly more difficult than 3 (I juggle 2 in each hand without any crossover -- a common pattern for 4 balls, as I understand). I tried for a couple years to teach myself to juggle 5, but I guess I've hit my limit, or I'm going about it all wrong because I was never able to learn that. The most I ever did with 5 was 7 catches. I guess I'll have to impress people with my cheap flame juggling and fancy coding and leave the 5-ball juggling to the pros.

On Foreign Languages

I grew up in Vienna until I was 9, so I knew a good deal of German early in life. I refreshed my German skills by getting a minor in German in college. I still can't keep all the nouns' genders straight and I forget much of my vocabulary because I just don't practice my German. But having an understanding of German does give an interesting perspective on language in general, and I'd agree with those who say that everyone should learn at least one foreign language. I also work for an international company and always have to keep translatability in mind for the code I write there. I still slip up from time to time, though, at least on my personal projects, where I didn't think I had to worry as much about translatability. I ran into a problem when I hard-coded "1.0" as the default value for some numeric fields. That's a no-no for international programs because other countries will use other decimal separators. The period could not be parsed on a German system, so I had to fix that one shortly before release.

As I've gained more perspective, I see some really screwy things about English. Why do we have to make dates so confusing? Why can't all dates be most significant to least significant. In the U.S. we have Month/Day/Year. In the U.K. they use Day/Month/Year. These don't sort very nicely. I think the Chinese have it right with Year-Month-Day (http://www.nyecounty.net/iso8601.html).

On Education

I fear the quality of education in this country is declining, but I don't want to get political here. I just want to say, I think it'd be fun if I could work with a group of young students interested in game development. I think I'd enjoy a little freelance teaching. And it'd give the students something creative and fun to do too. I'm not sure how to get started on that, though.

On Appropriateness

In my work with version 1 of the Scrolling Game Development Kit, I did have some games with questionable themes submitted for inclusion in the project listing. Some even topping the list as far as quality goes. I want SGDK to be as widely accepted as possible, so how can I achieve that goal? I think I have done OK in ensuring that the content of the forums and project listings are appropriate for most users of any age (the forums have an automatic censorship feature, but unfortunately users don't have control over whether to use or disable it for their own reading, as far as I can tell). And the content of the project listing is quite diverse. There's no particular trend toward inappropriate games, and no one game is too terribly inappropriate. As long as this continues, I will continue to accept all submissions on the grounds of appropriateness, and simply offer words of caution on games that some may find objectionable. If anyone finds these measures inadequate, please let me know and I can consider these policies further. I don't want anyone to be turned away from SGDK due to the appropriateness of the content on the site. The worst thing I've had to deal with so far is a couple users on the forums who use personal insults. Regardless of what kind of language is used, I won't accept personal attacks in the forums. I think all other topical discussion has been allowed so far. I'll accept discussion critiquing and criticizing SGDK, or comparing SGDK to other engines. Such discussion has value to some people. However I don't see any value in personal attacks. I think I'm relatively lenient on appropriateness. Even the users posting personal attacks were allowed to participate, and not banned. I just had to edit their posts and talk to them about their language. I tried to support them and invite them to join the fun, but they seem to have faded away.

On Organized Thoughts and Web Site Design

It may be apparent that I'm writing this page as I think about it, and not doing a whole lot of orginazation. The same kind of holds true of the site overall. I'm more interested in organized development than organizing web site content. I do take care for some kinds of content (I tried to make the help file for SGDK2 very complete and helpful). I think the web site is reasonably organized, but leaves a lot of room for improvement. If anyone would like to try to help me improve this site's organization and appearance, please contact me.