Not logged in, Join Here! or Log In Below:  
 
News Articles Search    
 


Submitted by Dominique Louis, posted on May 10, 2005




Image Description, by Dominique Louis



Above is a collage image of the winners of this year's PGD Game programming competition. The inaugural competition was held between January 1st 2005 and March 15th and this year's theme was "Dog Fight", but rather than force entrants to adhere to the traditional idea of 2 plane combatants, we extended this to allow any 2 fighting entities from bacteria to solar systems, as long as the fighting was intense. The other main stipulations were that the main code for the game had to be written in Pascal and that it had to be Open Source, so that others could learn from the code. Prizes ( generously donated by Borland, Caligari, 3impact and NexusDB ) were handed out to the first 3 place getters and 3 entries were given honorary mentions.

The games and their features/tools used, going from left to right, are as follows...

Top Row 2 images : AirBlast
3D Air combat simulation with SU37s. This game was the the most polished/complete of all the entries.
Developer : Eric Grange
Download : http://prdownloads.sourceforge.net/glscene/AirBlast_1.0_Setup.exe?download
Features :
  • Flight Tutorial mode
  • Duel with SU37 aircraft
  • Large detailed terrains
  • Several modes of game play
  • Tools :
  • OpenGL via the excellent GLScene components ( http://www.glscene.org ).
  • All voice samples were made with AT&T Natural Voices - http://www.naturalvoices.att.com/
  • AARAM, AIM9, Gate and Spanner models were made by Eric
  • Second row left : JagdGeschwader
    3D World War II air combat simulation.
    Developer : Sascha Willems
    Download : http://www.delphigl.de/eng_index.html
    Features :
  • 4 different WW2 aircrafts to choose from
  • 4 different scenarios
  • Stunning graphics using OpenGL (huge terrains, foliage, water reflections, explosions and more)
  • Arcade-like aircraft physics using the Newton Game Dynamics engine
  • Two players on one PC using splitscreen or two players over LAN/Internet
  • Tools :
  • Used Freeware models, with the permission of their maker changed some stuff on them using 3D Studio MAX
  • Used his own TerrTexGen and T2 (depending on which one gave a better looking terrain texture) for the terrain textures
  • The trees were made using TreeMAGIK (which is Freeware).
  • Used Corel's Bryce for the skyspheres, Photoshop for some afterwork/manipulation of textures and Adobe's Photoshop for the whole GUI.
  • Second row right : Sodoma - Lite
    This is an action shooter ( similar to decent ) multiplayer-only game, with great music and UI.
    Developer : Mind Never Team
    Download : http://sodoma.mindnever.org
    Features :
  • 2.5D game (full 3D view, 2D game-logic)
  • created using our own powerful Grom(tm) realtime multimedia engine
  • 3 different ships (fast, balanced, heavy), each concepted for different playing styles
  • 3 different maps for up to 8 players per map (maximum players number map defined; real number virtually unlimited)
  • user-defined color for ship
  • inertial movement (configurable through setup files)
  • smooth network gameplay; automatic search for server
  • radar view
  • secondary weapons for enhanced in-game action
  • original musics & sound effects
  • automatic detection of tables, ships, weapons & music
  • configurable number and types of gameplay view(s)
  • powerful in-game console which allows full control over complete game
  • Tools :
  • FreePascal, Lazarus (originally Borland Delphi 7), Euphoria
  • modelling and animated content created with LightWave3D v8
  • original graphics created with Photoshop CS
  • Third row left : Run-A-War
    Run-A-War is a fast, action packed, fantasy 2D isometric combat game
    Developer : William Cairns
    Download : http://www.cairnsgames.co.za/public.asp?inc=Articles&ArtID=3
    Features :
  • 6 Different Fantasy Characters
  • 2 Different Scenario Maps
  • 8 different Weapons
  • Various Armor, Pickups and Potions
  • Single Player against the Computer or 2 player networking
  • Various Expansion packs can be added
  • Create AI done using Delhi Web Scripting
  • Tools :
  • Used JEDI-SDL ( Pascal headers for SDL )
  • Graphics from Reiner Prokien ( trueSpace ), landscapes done using Vue Esprit 3 Lite.
  • Third row right : Dragon Duel
    Air Combat simulation using Dragons.
    Developer : DGDev Team
    Download : http://pgd.vadertrophy.com/Dogfight_15_March_05/dgdev_team/dragonduel_101.zip
    Features :
  • Basilisk 3D Engine - Supports OpenGL and Software rendering
  • Two players on one PC using splitscreen or two players over LAN/Internet
  • Tools : - Unspecified

    Forth left : Space Cadett
    Space Shooter with extremely accurate enemy.
    Developer : MSX
    Download : http://pgd.vadertrophy.com/Dogfight_15_March_05/msx/SpaceCadett.zip
    Features :
  • Cross platform: works on Linux and Windows
  • OpenGL 3D engine
  • Challanging AI enemy
  • Easy dogfight gameplay
  • Simple and funny cartoon style rendering
  • Tools :
  • Compiles with FreePascal, Delphi, Kylix
  • Blender
  • Gimp
  • Debian
  • JEDI-SDL ( Pascal headers for SDL )
  • OpenAl for sound
  • Forth row right : Area 52
    First Person Death-match game against lethal Computer AI.
    Download : http://www.plasmacode.com/modules.php?name=Downloads&d_op=viewdownload&cid=7
    Features :
  • A Quake3/UT single player dogfight against an evil Alien Mech
  • DOT3 bump mapping
  • Tools :
  • OpenGL via the excellent GLScene components ( http://www.glscene.org ).
  • Q3 model "Dragoon" by Sgt. Science,Firestarter,Crash
  • Physics are powered by ODE
  • More information about the entries and what the judjes said about each entry can be found @ the competition page.

    I am sure more Pascal developers will join us next January for our next Game Competition and hopefully more great prizes. In the mean time watch out for a demo competition being launched this July.

    Dominique Louis.


    [prev]
    Image of the Day Gallery
    www.flipcode.com

    [next]

     
    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
     
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
     
    Andrew Brown

    May 10, 2005, 06:43 AM

    Could have sworn this was IOTD not to long ago.....

     
    coda

    May 10, 2005, 02:37 PM

    pascal? :-O

     
    TMBG

    May 10, 2005, 02:51 PM

    The archives don't show it as an IOTD.

    So what are other people's perceptions and thoughts on using Pascal/Object Pascal as a game development tool? Since FreePascal now supports MacOS X as well as Win32, Linux and a host of other OS's, the language with all it's Object Orientated extensions certainly make it seem like a feasible cross-platform alternative, at least on PC ( as in Personal Computers, rather than being synonymous with Win32 ) related platforms.

    It seems there are some geeks out there who are trying to port the FreePascal compiler to generate GBA binaries. The power of Open Source I suppose, because Borland is unlikely to do it.

    Anyway, I am interesting in finding out what other game developers think about alternatives to C/C++.

     
    TMBG

    May 10, 2005, 03:07 PM

    Actually forget about the language used, what do you think of the entries? Has anyone downloaded them, played with any, think that the wrong game won?

     
    Dan Royer

    May 10, 2005, 05:24 PM

    I read the subject and immediately thought of illegal gambling rings like rooster fights (http://the.honoluluadvertiser.com/dailypix/2003/Jun/09/ila_b.jpg) and baby fights (http://cabinessence.cream.org, episode 1)

    A mortal kombat style game between different kinds of animals would certainly be different, not to mention controversial. might be pretty funny, if mouse always trumps elephant or something.

     
    Rollo

    May 10, 2005, 08:34 PM


    A mortal kombat style game between different kinds of animals would certainly be different, not to mention controversial. might be pretty funny, if mouse always trumps elephant or something.


    I'm guessing you never played "Brutal: Paws of Fury"? Excellent old game:
    http://www.the-underdogs.org/game.php?gameid=3956
    http://brutal.harmlesslion.com/shots19b.htm

     
    surrealix

    May 10, 2005, 10:26 PM

    I downloaded a couple of them, airblast and sodoma. For only 2 1/2 months of work, they are very polished, and pretty impressive.

    Airblast reminded me a lot of Gl-117, and played pretty well too. Sodoma is good fun, but it is a pity there is no CPU (I couldn't find an option at least) as I'm a fan of descent-style gameplay, and finding time to play over the LAN is difficult.

    IMHO the graphics from sodoma were of a higher quality than airblast (although not by much), but as was mentioned, airblast is complete.

    Congratulations to all the entries anyhow, it's no mean feat to finish a high-quality game in such a short time.

     
    SirKnight

    May 11, 2005, 01:31 AM

    I tried the dragon one and thought it was pretty cool (cuz I like dragons and stuff) but now the game refuses to run. I get an error with basilisk.dll. Maybe rebooting would help somehow but I'll do that later. ;) I'll be sure and try all the other games later too. I do wish the games were written in C/C++ but I can still figure out pascal even though I never did much more than hello world with it. :)

     
    Twistofchaos

    May 11, 2005, 11:00 AM

    Pascal is just as powerfull and usefull as any other language. In calculation speed, and pretty much anything else, I dare to say.

    Why people think so little of Pascal (and think of it as slow) is a mystery to me. Maybe because of the old TP7.0 compiler, but Pascal got more modern as well.

    Anyway, anyone want to do (or did) a modern comparison?

    More examples of how powerfull Pascal is you can find on my page. (I'm a hobby programmer, and addicted to the Free Pascal compiler. But I don't use (or like) OpenGL or DirectX for my 3D games, but prefer the good old CPU (and pure Pascal) to calculate my graphics.) www.geocities.com/tasteofinsanity81/stanspage

    I have not tried these games of the IOTD yet, but will go do now. The pictures look impressive. Too bad they use hardware-acceleration..

    Stan

     
    TMBG

    May 11, 2005, 11:37 AM

    Not all of them use HW acceleration. Run A War, for example, is pure 2D and the Dragon Duel game supports both HW acceleration and pure software rendering.

     
    TMBG

    May 11, 2005, 11:41 AM

    I wonder if SirKnight like dragons just because he is a knight.

    Btw, there is a update to the Basilisk DLL available @ http://eicart.free.fr/Basilisk.zip which should fix the Access Violations you mention.

     
    Twistofchaos

    May 11, 2005, 01:47 PM

    I should of added a smiley at the end, it wasn't a serious comment.

    They're some really amazing games.

     
    Jari Komppa

    May 11, 2005, 10:58 PM

    I used to code in pascal almost exclusively, but the simple thing that pushed me over to the C camp was this:

    1. char foo[1000000];

    Pascal, at the time, couldn't handle arrays bigger than 64k-2, and I desperately needed to store at least 640x480 bytes. I had found that I spent more time fighting with language limitations than I did working on "real code".

    After that, I found how powerful C's pointers are. And handy shorthand operators. And so on, and so forth. I'm not saying that pascal hasn't progressed over these limitations, but C is pretty much the lingua franca right now..

    The attitude towards pascal most likely comes from experiences like mine.

     
    Dan Royer

    May 12, 2005, 01:21 PM

    ugh, too many look like furries. :P

     
    dmulligan

    May 12, 2005, 06:59 PM

    This is going to be controversial, however these really are my opinions and aren't intended to provoke a language war.

    IMHO Pascal (specifically the Delphi branch) is braindead beyond belief. There are so many ommissions from the language feature set that you mostly find yourself having to program around the ommissions to get a task done, rather than use the language fully.

    Delphi does have some advantages over other languages, for instance it is very quick to compile, it has a nice GUI editor and has a nice standard library, but these are all countered by the glaring ommissions and the ridiculous amount of fluff the language includes.

     
    pauljan

    May 13, 2005, 02:37 AM

    Please (pretty please?) back this comment up with a _list_ of missing critical features and redundant fluff, so that we actually have something to ponder on, instead of just a 'I don't like the language' post. I'll start you off with 'templates' on the 'missing features' part, what else?

    I am also very curious as to what you are referring to with 'redundant fluff'. If you are referring to RTL/VCL then never mind, but I hope you were talking about the language itself, which might be interesting.

    Borland is having a 'what features would you like to see added to the language' poll right now, and we might have things fixed *lol*

     
    dmulligan

    May 13, 2005, 05:16 AM

    Fluff:
    redundant keywords. What on Earth is the need for the keyword "then" and "do"? Why is the language itself so verbose? Repeatedly typing begin and end really starts to grate after a while.
    etc.

    Missing features:
    Templates
    Operator overloading
    Class variables.
    Why are you unable to name a method after a variable? (I can guess why, probably to disambiguate method call which do not use the brackets from object member variables).
    etc.

     
    Twistofchaos

    May 13, 2005, 07:38 AM

    >What on Earth is the need for the keyword "then" and "do"? Why is the language itself so verbose?

    Pascal is intended as a readable language.

    >Repeatedly typing begin and end really starts to grate after a while.

    That's also a matter of taste. I think it's convenient and makes things clear.

    >Missing features:
    >Templates
    >Operator overloading
    >Class variables.
    >Why are you unable to name a method after a variable? (I can guess why, probably to disambiguate method call which do not use the brackets from object member variables).
    >etc.

    Pascal isn't such a "high" abstract language. (A reason why Pascal compilers are fast) So what you write in Pascal gets translated to assembly fairly direct. (It seems, no expert.)
    That's also something you like (if you like assembly and worrying where your bytes went) , or don't. (If you like high level functions.) In C you can write in such way too ofcourse, but having those features makes the compiler and everything else more complex.(+bigger+slower)
    As for the missing features you mentioned, (atleast in Free Pascal) operator overloading is possible. Further templates etc. beat the intentions of Pascal.

    Maybe Pascal is a language less suited for very large projects where several people are coding in a very propper and modern way (although I doubt it.) , but for an amateurprogrammer like me it's an ideal language. (maybe that's no compliment. oh well.)

    Stan

     
    Twistofchaos

    May 13, 2005, 08:01 AM

    Hi Jari,

    >Pascal, at the time, couldn't handle arrays bigger than 64k-2, and I desperately needed to store at least 640x480 bytes. I had found that I spent more time fighting with language limitations than I did working on "real code".

    Well, at the time you could also use Pascal pointers for that. (Getmem, and x^[y] )
    Further storing 640x480 bytes could be done with Segment:Offset type things, but indeed that's more machinelevel programming then Pascal.

    >After that, I found how powerful C's pointers are. And handy shorthand operators. And so on, and so forth. I'm not saying that pascal hasn't progressed over these limitations, but C is pretty much the lingua franca right now..

    They are a matter of taste, prefering abstract level to low(er) level programming.

    Indeed most of these limitations don't exist anymore. (so you could give it a go again. :) )

    Stan

     
    dmulligan

    May 13, 2005, 08:10 AM

    Twistofchaos wrote: Pascal is intended as a readable language.


    And those two redundant keywords add nothing to readbility.

    That's also a matter of taste. I think it's convenient and makes things clear.


    Convenient in what way? How is begin clearer than {?

    Further templates etc. beat the intentions of Pascal.


    To be a pain to use? ;-)

     
    dagongo

    May 13, 2005, 08:32 AM

    First off (the on-topic part):
    nice IOTDs. It is nice to see ppl using (object) pascal again for games.
    GLScene rocks, as do JEDI-xxxxxx and all the other open source packages
    mentioned. You took a nice pick out of the available packages/libraries.

    Keep up the good work.

    As for the off-topic part (?):

    dmulligan wrote: Fluff: redundant keywords. What on Earth is the need for the keyword "then" and "do"? Why is the language itself so verbose? Repeatedly typing begin and end really starts to grate after a while. etc.


    It is so verbose, because it was a language that was designed to be readable
    (in contrast to hexcodes or assembly) back in the days. Niclaus Wirth also
    designed it to be a language to teach procedural (or structured) programming
    principles.

    Back in those days it mattered, and original pascal was nothing that could be
    modularised. ie: the entire program was in one file

    And, no ... this was all before OO came in to the picture.

    With Turbo Pascal, in the later versions, including borland pascal 7.0, there
    were new features and language elements added as years went on during all of
    the 80's and the first half of the 90's. (modularisation and rudimentary
    OO (constructors, destructors), much like c-structs with constructors and
    methodpointers = classes

    The came Delphi, which is in fact OBJECT PASCAL (with a twist -> so similar,
    but different enough to deserve an own name).

    As for the verboseness. Just for readability. When I first read a C(++) piece
    of code, I found it weird, unnatural and very cryptic (and it still IS
    pretty much unreadable).

    And to be blunt, you can set your ide quite easily to generate stubs for
    you as well with one keystroke, so it is not such a valid argument to call
    it a hindrance.

    Templates
    Maybe there is a need for them. Maybe not. Macro's are also not supported, although conditional defines and conditional compilation is (so suggestion of a precompiler/filter). Java for instance only has one since its latest inception (jdk 1.5, aka java 5.0). But as the other post suggests, it gets in the way of one thing that Object Pascal, Pascal and their nephews are good at (better than any compilable language) => compilation speed; which also counts in a business world.
    Operator overloading
    Operator overloading is actually just like calling a virtual method. (now, if only you made those operator methods virtual in your class definition). So, maybe you like typing some shortcut as aMatrixInstance *= anotherMatrixInstance; but for a compiler this actually reads the same as: aMatrixInstance.MultiplyBy( anotherMatrixInstance ) And to be frank, except for C++ there are not that many languages that support operator overloading (except for that language I like to call "we only know C++, although we do not implement the specs fully, so let's steal the inventor of Delphi and let him invent a language that gives us an answer to Java (and Borland/Inprise/whatever they like to call themselves tomorrow). But we still need to be able to recognise it as C++-like with all its discomforts." and thus C# was born).
    Class variables.
    I assume you mean those static class variables, and not instance members. Actually, in other languages these are 'scoped' global variables. You know, the things you get thought in programming 101 never to use? Ofcourse they can be emulated in Delphi/(Free) Pascal (but not original Pascal), because of the concept of 'unit'. You have 2 scopes in every unit: things that are a public interface to the stuff you put inside. And then there are the private stuff (along with implementation) and those 2 blocks are bizarrely enough called 'interface part' and 'implementation part' and respectively denoted by keywords 'interface' and 'implementation'. You cannot extend a class that you defined in 'interface' with other methods, but neither can you extend a class in C++ after the '};'. So, you can have class members, just use global vars in your unit's implementation part. Ofcourse if you want to be able to access those, you could write getters and setters that are class (static) methods that access those. But for anything other than implementation of a singleton pattern i have never used it (nor did I need it). Nor in C++, or any other language, except for Java ( no enums there, or 'global constants' ).
    Why are you unable to name a method after a variable? (I can guess why, probably to disambiguate method call which do not use the brackets from object member variables). etc.
    Correct. This is one thing I found weird as well when I came back from C++ to code Delphi (professionally). But it is something that you get used to. Another thing I really mis in Delphi is RTTI (ok, you can get rtti for all your published and automated properties, fields (members) and methods if you derive from TPersistent or subclasses; but that's it). But then again, you *usually* do not need a lot more than this. In the end, you need to remember that what you take for granted in one language, you might not find in another, but in this same end: all current languages are equally powerful. they just might miss some conveniences. (VCL/Kylix vs templating/write-everything-yourself ... I take VCL any day, including over .Net's WinForms) kind regards, DaGongo

     
    This thread contains 21 messages.
     
     
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.