Today, August 12, 2014, is a tremendous date in the history of Piga Software, marking ten years of our existence. It is also a date of great significance between both Hamish and I, seeing as how 2004 was also the year we turned ten years old and on May 13th of this year we turned twenty years of age. Still, perhaps big numbers in of themselves are not actually that important, but the steps that lead on to them. I have already documented our history extensively on this wiki, and so this article is only to bear witness to some personal highlights, and how it relates to our development as coders, and then delve into the exciting future of where we and Piga (in whatever incarnation) hope to go for the next ten years!
-Graham L. Wilson
Visual Basic Era: Pre-2004-2005
Shoot or Doom
It is amazing what just a little bit of knowledge will lead one to do. Learning the ".show 1" command in Visual Basic 6 that allows one to open up another form was all the basic game logic code we needed to start working on our own designs. From here we started work on a variety of predominantly first-person adventure games as crude approximations of our favourite first-person shooters. Other efforts included attempts at simulation games (including one exploring the POV of a domestic cat), guessing and other parlour games and even attempts at educational games (made by us as schoolchildren ourselves! I remember once my mother let me continue using the home computer when she saw I was making a game about the alphabet - kids take note!). Wilson Net
Mostly however, this period defined our first attempts at creating practical application programs and the basic principles of user interface design. One of the most long-standing of these efforts was Wilson Net, which was an attempt by us to create our own web browser (first with an Internet Explorer back-end, than later with a Gecko one through ActiveX). Both Hamish and I also spun out various incarnations of pseudo-replacement interfaces for Windows, complete with desktops and even some of their own system utilities and limited applications, particularly text editors and file managers (again, with Windows Explorer backends, and some sample code). We even more broadly tried to work towards creating our own basic office suite. This all formed the nucleolus of Piga Software proper, founded when we launched a web page and logo starting from August 12, 2004, when we were both aged ten. Finally, it is of course obvious that these early landmarks are what lead us to Gambas.
Game Maker Era: 2005-2007
From simple... ...to more complex
The Game Maker era did not really produce much more finished games than the Visual Basic one did, but it proved quite vital to our development as game designers. It gave us much greater room to experiment, and that is something we definitely did - starting over 124 project files from May 2005 to April 2007 (plus 21 completed simple screensaver programs) that ranged from arcade games, side-scrollers, strategy/simulation games to rudimentary first-person shooters. We also created a few applications in this game-oriented tool, most notably a CD player and even an attempted graphics program. This perhaps rather illustrates the lack of focus one might expect from eleven to twelve year olds (as icculus has noted - "we have all been that [x] year old"), but, as it did in the Visual Basic era, it also represented much experimentation, now moving beyond the adventure game mould into a variety of other genres and game types. It also produced several game design ideas that are still on our wish-list, including our dream for a revived ego shooter, our ambition to eventually write a farming simulator actually made by farmers, as well as several remakes or spiritual successors to our favourite games that we first prototyped in Game Maker (along with a few fangames). All in all, this helped reinforce the fundamentals - even if we rarely put much together beyond in any coherent fashion. Except for one exception...
Note: I also briefly experimented with the similarly inspired Game Editor in 2006 on both Windows and GNU/Linux, and it was originally hoped to be our vessel into Unix-like development. Its actor concept might have helped inspire Piga Animator.
Although essentially just a slightly modified version of the "1945" tutorial by Mark Overmars, Donut Quest marks a milestone as the first complete game we we ever shipped, and so represents mostly lessons learned in project management. This was the first time we created a full set of artwork, music, sounds, and put together a finished set of levels, and then actually set out to release it on the Internet (Billy Bear, our remake of the Pacman example, was also complete even with a full soundtrack - but never put out). The reason it made it out in the end was at the insistence of Malcolm Wilson, who demanded its release rather than end up in the perpetual conceptual or development stage of all of our other projects. It also marked the beginning of a long-standing problem of just how to release our games and programs, finding reliable free storage difficult, something that was not properly corrected until we moved onto icculus.org in 2010. We have perpetually wanted to do something further with this first title, perhaps even make it into a web game more suiting the web comic it is based on (which is still active today) - but well, there is always still the future. Which is something that looking to the past helps remind you.
Gambas Era 2007 - 2014 (Present)
Bomb Search, and early effort of Hamish's
Our longest era, though arguably our least influential in terms of foundations. Though maybe it just feels like that as it is still going on, and it is hard to be retrospective about things that are still in motion. The move to GNU/Linux was always going to be essential to us, hard-core Stallmanists that we are, but the discovery of Gambas, a language so like our the beloved Visual Basic made it much easier. Wilson Net resurrection
When it came to detaching from Game Maker however, it was a bit harder as it required me to actually learn about game logic and computer graphics at a lower level (given abstraction, we are all still standing on some support pillar or another). So in the short term, it might have seemed like a step backwards, though I do not regret learning how to do it all properly at all from my vantage point now. I just wished I had learned to use things like arrays earlier...
Many of our early projects, some of which still exist at least in partial form, were inspired by our Game Maker and earlier Visual Basic days, such as Piga Nation and attempts to resurrect Wilson Net, but of course our best known effort was the wildly over-ambitious Free Empires, a goal I am still clawing towards now armed with vastly more knowledge than I had then (again, see icculus' comment about young coders). Oh well, for now everyone can enjoy 0 A.D. instead, and Age of Empires does actually Wine like a charm now. The biggest thing I have always struggled with in Gambas has been how to best handle graphics, dating back to version 1.x where picture boxes did not have transparency, to finding pure drawing areas too processor intensive, to my modern unified ideal of combing both to best effect that will be unveiled in all my third-generation 2D engines.
Alexei: Part IX
Alexei: Part IX
Alexei: Part IX was our first proper game release for GNU/Linux, seeing as how PigaVision was an application and Piga's Pumpkin Carving was just an amusement without any goal or rules, and our second full game release after Donut Quest. It also marks the only time that Hamish Wilson has taken the lead on technical design matters, developing the title, and its underlying Gambas Adventure Engine, on his own in a little under a month, after first prototyping the tile in Game Maker on Flitwick while Griffindor was down in late 2008 and early 2009. The game's length reflects the quick development, but there is still a humour and charm to this point-and-click adventure game, whose inspiration primarily comes from the early comedic games of Ben "Yahtzee" Croshaw. Incidentally, Hamish would later go one to package GNU/Linux binaries for Yahtzee's non-comedic Chzo Mythos games the following year. A Windows version was essentially finished by Iain Wilson in Visual Basic .NET, but due to support concerns it was never released. Hamish worked on a follow-up titled Alexei: Part XIII, releasing the first part on January 1, 2011, but has since not really worked on the title, focusing more on his efforts to promote GNU/Linux gaming more broadly.
Windys is what I still consider to be the game I am most proud of, even if like everything else there are vast amounts of the code that I would love to just re-write now (so much needless repetition!). As a game I still feel that it holds up rather well, with its retro ambiance coming off quite strong from the ASCII art and MIDI music, and I still am very happy with how the tone and the dark humour turned out (including the grand reveal Hamish put in the ending). It was everything I had wanted when my brothers and I first conceived it as small children. This also marks one of the first, and still one of the few, times I managed to write an engine to the point that I could step back as technical director and let Hamish, as lead designer, work his magic on it. This rarity is probably the main reason it is I who is writing this retrospective rather than him, so it is certainly an experience that really needs to be repeated, as we are aiming to do with the first project that will be built up on top of PS Tech. Ultimately, Windys represents the highest level fully released of my fist-generation engines (Childish Cannoneer extends this a bit further) on top of Gambas, based on picture boxes or, in this case, labels.
Gambas Arcade Engine
Over the Top, the most recent, complex, but perhaps also most muddled example
The highest level of my second-generation of Gambas graphical engines, based purely on drawing areas, are shown on the games using my so-called Gambas Arcade Engine and are thus my adolescence with Gambas. The first project to use drawing areas was Piga's Pumpkin Carving, our first GNU/Linux release alongside PigaVision, which also laid the stage for later by being based on an idea from our original Piga Windows Entertainment Pack projects, as this was then followed by Piga's Thanksgiving Dinner Hunt and other holiday-themed tiles. These basically represented my attempts to utilize my engines in actual game contexts, taking the form of a series of arcade-type games of varying complexities. They still show problems, such as a reliance on grid-based collisions I had slowly been excising before getting too busy with my current projects and other clunkiness, but helped finalize my knowledge of how to bring a game from start to finish, particularly in terms of working with Malcolm Wilson Multimedia on secondary media aspects. I do still hope to update these further later on.
Odds and Sods
Hamish Wilson also developed two front-end programs: PigaVision, released on October 1, 2008, and Soul Capture, released on May 13, 2012. Both dealt with video-related software as their back-ends, the first being involved in television-out and the second for live capture of OpenGL programs. However, neither of them are now that useful, as the underlying technology for PigaVision is out-dated, and we now use SimpleScreenRecorder to handle live capturing rather than glc. These programs however do illustrate the utility of Gambas when it comes to rapid application development as well as providing a platform to quickly and easily write one's own system or application tools. Piga Nation 2012 development shot
There are also some projects that, while advanced rather far, are still loose ends. The biggest of these is Piga Nation, which has always been one of my favourite secondary projects, and one which I tried very hard to at least get a minimal release done in time for its fifth anniversary on October 7, 2012, before efforts were overtaken by Piga Animator and PS Tech. The conception is rather timeless however, and so should not be a problem really to finish if I ever have time. In April 2012 I started work on a game to show off the Gambas language alongside the Gambas Forum community called Childish Cannoneer, but ultimately stopped work on it after two Source Releases due to a lack of further feedback. Again, it is not impossible that I might finish at least a limited version of what I have there at a later point in time. As I said earlier on, anything is possible. Sidelines
It is a bit overly simplistic to imply that the above was the sole path of our evolution, as with any story there are occasional sidetracks...
Arguably the precursor to us using Game Maker, ZZT has been a fixture of many people's first taste at game design. It is amazing just how much variety could be made using simple ANSI art and a limited variety of bright 8-bit colours, but the real genius of Tim Sweeney's design was the inclusion of ZZT-oop, which would be our first taste of in-game scripting. Everyone now clamouring to use Unreal Engine 4 should arguably pay homage to this as the beginning. It was this scripting of course, that allowed you to make games of otherwise inconceivable genres, though most of our efforts took the standard action-adventure approach (sometimes configured as platformers with a jetpack). A few were even simply based on exploration, and there were a few odd-ball ones like an attempted racer or Pacman clone. I even tried creating a mock interface (very, very mock) ala what I was doing in Visual Basic at the time (as well as a game which would play little pre-coded tunes). Malcolm Wilson created a beautifully animated dragon spitting fire. The funny thing now is that these are in some ways our best work of the era, even if they are riddled with spelling errors (actually exacerbated by having a somewhat more advanced vocabulary than average for our age!).
Free Empires: Age of War
Perhaps the most inevitable sidetrack, or is it a back-step? When you have already learned one generation of Microsoft BASIC, what is to stop you from learning another earlier one? Learning QBasic (both version 1.0 included with MS-DOS and Windows 9.x, as well as the popular version 4.5 which allowed the creation of executables) is what helped me learn my essential language elements, now not being distracted by the bells and whistles of the GUI editor (anyone can put down a few buttons on a Visual Basic form and call themselves a programmer, but to actually go down in the trenches of declared variables and conditional logic is a whole other story). Although I have advanced far past it now, I still consider Beginning Programming for Dummies by Wallace Wang to be my core bible (well, perhaps now also alongside the Red Book for OpenGL).
Naturally, a large amount of these projects took the form of the classic text adventure game, but I later also branched out to even using some of the primitive multimedia code in QBasic (creating one in particular from the point of view of a madman, as well as a repeating pattern based screensaver), alongside printed ASCII art, as well as attempts at creating versions of my 2-Step and Piga Brain concepts. I also experimented with some of the file management code, and once I swear I managed to get QBasic in Dosbox to override root permissions! Free Empires: Age of War is the farthest along a project ever got (about 75% complete, mostly just needing probabilistic enemy AI and finalizing the economic code), though Hamish also once worked on a text incarnation of Alexei while his machine was down, forcing him onto our oldest laptop. In 2006, I also coded in the conceptually similar Liberty BASIC on some more advanced adventure games, before concluding that its attempts at modernizing the language were weak at best. Playing around with FreeBASIC has long been on my wish-list, but not something I ever really had time for.
Despite our last full release being in May 2012, Soul Capture, and our activity on the surface becoming quite sedate, Piga is far from dead. In fact the Internet silence actually marks an escalation in my efforts - as we begin to move on to bigger and brighter things. The completion of the 6.00.1x: Introduction to Computer Science and Programming Using Python course in the autumn and winter of 2013 helped shore up my self-taught knowledge in areas where I was, admittedly in hindsight, quite weak and as such has helped spring-board me into a new tier of development. All of this allowing me to dig deeper into three projects whose current designs came to me in a rush as the year of 2012 came to a close. If you want to see the future of Piga, it lies in my intentions with regards to these three big projects, although other smaller ones started in the past may still resurface. Anything is possible.
The three dimensional worlds of Doom and Duke Nukem 3D are what convinced me to get into game programming to begin with, and it always pained me just how murky and impenetrable a barrier the jump into 3D always seemed to me. Which is why the most painful aspect of switching away from Game Maker was losing the ability it offered to satiate that desire to a limited fashion. Ultimately it took the efforts of Tomasz "tommyline" Kolodziejczyk in late 2010, before I was able to start bridging that gap, having ported over several of the classic NeHe Productions tutorials to Gambas as well as developing a few examples of his own. Even so, I only really poked idly at it for about two years, waiting to see what else he would put out, before I eventually started to take the effort up of teaching myself OpenGL with tommyline's help in December 2012. Which ultimately was good timing, as this was around when he was in fact easing out of his efforts in favour other interests. I can now say however that I think I am reaching the end of the journey, as a complete version of my first version of PS Tech, as a "3D tile engine", is getting closer by the month. What comes after that? Well, that is another story...
First started in August of 2008 as an attempt to recreate some of the animation experiments I first began in Game Maker, my efforts on this project were largely bottom tier until I watched Neon Genesis Evangelion for the first time in early 2012, and by extension got into the larger world of anime. Having seen the true power and range that animation can offer, even in its most limited form, I became far more convinced in the value of my project, particularly as I looked further into machinima and procedural animation and released just how much of my game engine experience I could bring to the table. With an essential interface designed in late 2012 and further into early 2013, effort has largely been based on my learning animation theory (primarily cut-out and morphing animation with the help of Synfig) as well as basic human drawing and character design in order to define the specification for the unique kinds of 2D machinima I am aiming for. Although I had originally intended to do a first release as an early beta, the current plan is too release the first version of Animator alongside the first completed short film within it, in order to be a full proof of concept. Therefore, these two efforts are the for the moment joined together.
Just the beginning...
Although presently dormant, this is to be my next big game project after PS Tech and incorporate the numerous improvements that have arrived through my increasing skills of the past few years. What has long been the "star project" of Piga Software will still see the light of day, and will hopefully then become something of greater general interest, beyond the Gambas community, just as hopefully our efforts more broadly will over the next decade. Source Release 3 of Lamp Refugee is intended to be actually properly playable, beyond simply being winnable as it is in SR 2, and will be considerbly closer to our envisioned design to build Free Empires atop of, including the ability to be modular which will lay the groundwork for our intentions of turning it over into a properly community-based project. Other upgrades of my new knowledge to other engines, particularly the Gambas Platform Engine are also strong possibilities for the future. It has been a long road to get here, which has seen me go from childhood to adulthood, but presently I just feel one thing... that I am now fully ready to build what I want to build.