Abraxas

Got a project that uses Gorgon? Got some code snippets that use Gorgon in an interesting way? Got milk? Post your screenshots, descriptions, and/or code here.
Forum rules
Keep it on-topic and DO NOT be disrespectful of other peoples work. Criticism is fine, as long as it's constructive.

Please note that the owner(s) of this website are not responsible for the content of any files uploaded. Please use them at your own risk.

If a file contains objectionable material please pm Tape_Worm or a moderator and it will be dealt with.

Please don't post objectionable files. If you post objectionable material (i.e. porn, warez, viruses or plagiarized work) your post will be deleted and you will be banned.
 
Sun Dec 16, 2012 11:58 pm

  • Abraxas is the second generation of a game engine I originally made 3 years ago while learning C#. The original version used GDI+, while this version can use either Gorgon or GDI+. Other improvements are focused on the scripting engine, which now supports recursion, pointers, text rendering, rendering of primitives and non-boolean object properties.

    Its not so much of a game as it is a game engine - I develop games in it as a means to make sure that it works, and to expand its featureset. Its also mostly useless as a game engine in that there's nothing it does better than anything else already out there - Its more of a learning project than it is a serious and useful game development tool.

    It has the following features:
    • A trigger based scripting engine with support for recursion and pointers
    • Support for GDI+ as a fallback if Gorgon isn't available
    • Saving and loading the game state

    The following are features which I plan to work on eventually:
    • Multiplayer support (I already have another multiplayer game, hoping to port some of the netcode over)
    • More commands in the scripting language
    • OpenGL support
    • A level editor? (due to the level design this might be difficult, but it would be pretty handy - Maybe just support importing from the Tiled map editor)

    I also need to optimise the rendering a lot. Because of the game's GDI+ roots, it doesn't use batched rendering and has all sorts of hideous inefficiencies.

    I'm considering switching from the interpreted scripting language of my own design (erk!) to something like a Lua VM, or maybe even C#, using Roslyn (although Roslyn was rather slow last time I checked). The need for something which is easier for people to learn is pretty big, and using a language that already exists would make documenting the system and setting up proper script debugging a whole lot easier.

    Here's a few screenshots:
    http://i.imgur.com/N5H7r.jpg
    http://i.imgur.com/hnSjw.jpg

    Here's an excerpt of a game level file:
    Code: Select all
    include player_controls
    include ingame_menu

    name Chapter1\tutorial

    load knight\black\peaceful
    load freya\peaceful
    load terrain\grass
    load buildings\cottage1
    load wolf\brown
    load wolf\grey
    load tree\0
    load tree\1

    **snip**

    Object terrain\grass -51200 -51200 -1 tile 102400 102400 render frozen
    Object buildings\cottage1 0 0 0 solid render frozen *name=house
    Object wolf\brown 120 220 0 render wolfai
    Object wolf\grey 80 240 0 render wolfai
    Object freya\peaceful 100 250 0 render *name=dani SE
    Object knight\black\peaceful 200 300 0 NW render player *name=grav *moves=true

    Object null -200 10 0 frozen tree render
    Object null -550 -700 0 frozen tree render

    **snip**

    {
    SCRIPT randomtrees
    cond local.done != 1
    let local.done = 1
    foreach mapobject as local.tree with tree
       let map.[local.tree].type = .tree\ & rnd.31
       let script.setuptree.tree = local.tree
       run setuptree
    next
    }

    {
    script setuptree
    // ensure script never runs unless called by other script
    cond true = false
    let map.[local.tree].x = 2500 - rnd.5000
    let map.[local.tree].y = 2500 - rnd.5000
    if map.[local.tree].collideswith.house = true then
       run setuptree
    endif
    }

    Object null 0 0 100 frozen render *name=speech *font=arial *size=16 *colour=white *text=
    Object null 0 0 99 frozen render absolute *name=fader *colour=black

    **snip**

    {
    dialogue controls
    TEXT Choose controls for single player mode
    CHOICE Arrow Keys
    ACTION exec set script.player_controls.controls_keyboard = true
    ACTION exec set script.player_controls.mouse_scrolling = true
    ACTION dialogue controlsdone
    CHOICE WASD
    ACTION exec set script.player_controls.controls_keyboard = true
    ACTION exec set script.player_controls.control_up = keyboard.w
    ACTION exec set script.player_controls.control_down = keyboard.s
    ACTION exec set script.player_controls.control_left = keyboard.a
    ACTION exec set script.player_controls.control_right = keyboard.d
    ACTION exec set script.player_controls.mouse_scrolling = true
    ACTION dialogue controlsdone
    CHOICE Mouse
    ACTION exec set script.player_controls.controls_mouse = true
    ACTION exec set script.player_controls.mouse_scrolling = true
    ACTION dialogue controlsdone
    TEXT Raid leading uses a different set of controls. You will be asked to choose those later.
    }

    **snip**

    User avatar
    Stealth107
     

Mon Dec 31, 2012 8:21 pm

  • Will get around to uploading a build sometime this week or next, just need to throw together a level that actually uses all of the current game engine features, instead of using workarounds to deal with a lack of features that have since been fully implemented.
    User avatar
    Stealth107
     

Wed Feb 20, 2013 6:23 pm

  • Several other things hijacked my to do list, but here we are.

    Pressing escape will generally bring up a menu that'll let you quit, and left clicking should skip credits and the like.

    In terms of gameplay there isn't much, so if you're hoping for an exciting game don't bother downloading it :P

    Because I know someone is going to ask, there is a reason most of the graphics are bmp files. GDI+ has performance and memory usage issues with PNG files (specifically ones with any sort of transparency), which led the game to be unplayable on one of my extremely low end testing machines. I decided it'd be better to take the hit to hard drive space usage to make the GDI+ renderpath more efficient.

    http://dl.dropbox.com/u/66192848/Abraxas/Abraxas.zip (66MB, unzips to 213MB)
    User avatar
    Stealth107
     

Wed Feb 20, 2013 7:05 pm

  • Tried to run it, but got a Null reference exception when I tried using the Gorgon based renderer.

    Seeing as I'm the one who wrote Gorgon, I'm pretty sure I have the prerequisites to run it :) Sounds like something is amiss.
    haikus are easy
    but sometimes they don't make sense
    refrigerator.
    User avatar
    Tape_Worm
    Site Admin
    Site Admin
     
    Posts: 324
    Joined: Wed Feb 27, 2008 9:15 pm
    Location: Canada

Wed Feb 20, 2013 7:54 pm

  • I think I've possibly found the cause of the issue, if you have multiple video adapters and monitors aren't connected to the first one. Is this the case?
    User avatar
    Stealth107
     

Wed Feb 20, 2013 10:05 pm

  • Stealth107 wrote:I think I've possibly found the cause of the issue, if you have multiple video adapters and monitors aren't connected to the first one. Is this the case?

    I have a single adapter with 2 heads (Radeon 6870) and both heads have a monitor connected.
    haikus are easy
    but sometimes they don't make sense
    refrigerator.
    User avatar
    Tape_Worm
    Site Admin
    Site Admin
     
    Posts: 324
    Joined: Wed Feb 27, 2008 9:15 pm
    Location: Canada

Wed Feb 20, 2013 10:53 pm

  • I've removed the code that uses WMI to obtain the monitor refresh rate. Given that you have monitors connected to both heads it might not be the problem, but I did some research (aka Google) and it seems that Windows 8 returns nulls for many win32_videocontroller WMI attributes. Its also the code within that particular try/catch block that is most likely to be not working.

    http://dl.dropbox.com/u/66192848/Abraxas/Abraxas_WMI_Patch.zip
    User avatar
    Stealth107
     

Thu Feb 21, 2013 7:32 pm

  • Stealth107 wrote:I've removed the code that uses WMI to obtain the monitor refresh rate. Given that you have monitors connected to both heads it might not be the problem, but I did some research (aka Google) and it seems that Windows 8 returns nulls for many win32_videocontroller WMI attributes. Its also the code within that particular try/catch block that is most likely to be not working.

    http://dl.dropbox.com/u/66192848/Abraxas/Abraxas_WMI_Patch.zip

    Yep, that seems to have been the culprit, everything worked just fine.

    I tried it out, ran pretty smooth. The issue I saw was after I started walking. After some time the camera would overshoot the character and then the character would teleport to the middle of the screen. Other than that, ran just fine.
    haikus are easy
    but sometimes they don't make sense
    refrigerator.
    User avatar
    Tape_Worm
    Site Admin
    Site Admin
     
    Posts: 324
    Joined: Wed Feb 27, 2008 9:15 pm
    Location: Canada



 

Return to Projects that use Gorgon




Information
  • Who is online
  • Users browsing this forum: No registered users and 1 guest
cron