Operation Black Sun 2

 

[Screenshots] [Downloads]
Operation Black Sun 2 Menu

Operation Black Sun 2 was intended as rewrite of Blacksun 1. I wanted to do everything right and better than in the first game. I wrote my own tile engine, wrote my own GUI system, wrote an editor on top of that, wrote my own network engine, rewrote it, then rewrote it again (and named it Zoidcom), switched to OpenGL rendering so that I could render nice transparent stuff fast and just as that was done I switched to Ogre3D and dropped the tile engine notion completely. With that came CEGUI so the awesome menu you can see on the right didn’t work anymore without a major rewrite (most of the rendering used immediate mode OpenGL in my code). That left me with basically nothing but an engine framework that supported networking. And scripting. Did I mention that the complete game logic was implemented in Lua? I have seen Unrealscript and wanted to do something similar, so that was really cool. Here’s a short lua snippet that defines the particle effect that appears when a laser hits an obstacle:

------------------------------------------
---- (C) 2004-2006 Jörg Rüppel.
-------------------------------------------
 
LaserExplosion = {
  -- data needed by engine
  classProps = {
 
    ----------------------
    -- necessary values --
    ----------------------
 
    -- name of the class
    name = "LaserExplosion",
    -- parent class
    parent = "ObjectBase",
    -- group this class belongs to
    group = "VFX",
    -- object flags
    flags = {
      -- display in editor
      bEditor = 0,
      -- will be instantiated on server when loading
      bCreateOnServer = 0,
      -- will be instantiated on client when loading
      -- set to 0 for objects with bReplicate = 1
      bCreateOnClient = 1,
      -- will be replicated to clients
      bReplicate = 0,
      -- ingame visibility
      bShowIngame = 1,
    },
 
    visual = {
      exploanim = {
        type = "2D",
        material = "Laser/Explosion",
        size = { 20, 20 },
      },
    },
  },
 
  -- freely definable data, read only
  objProps = {
  },
 
  -- object variables.
  -- can be registered as replication data.
  -- on object instantiation, the value from objectProps will initialize
  -- a value of the same name in objectData.
  objData = {
  },
}
 
function LaserExplosion:onInit()
  registerTimer(100, ShipExplosion.onTimerRemove, {self})
end
 
function LaserExplosion:onTimerRemove()
  self:requestRemove()
end

Want more? This one defines the player’s spaceship. This one defines a projectile. The framework can even synchronize Lua variables over the network. Anyway, all this happened over the course of two years I think and my focus shifted ever more to the development of Zoidcom. I abandoned the game shortly after the switch to Ogre. In retrospect, this was more a coding testbed for me than anything else. Due to that, Blacksun 1 is the only thing I would call a playable game in the series. The menu was awesome though (before the switch to Ogre3D).

 

You can still download it. Here’s the allegro.cc page.

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

© 2011 Jörg Rüppel | Impressum Suffusion theme by Sayontan Sinha