Author Topic: Destiny's Awakening  (Read 3368 times)

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Destiny's Awakening
« on: November 09, 2012, 11:53:07 pm »
Since it seems a lot of people are having fun releasing teasers and demos of their work-in-progress games, I thought I'd share one I've been working on -- Destiny's Awakening.

DA is a 2d SNES Dragon Warrior/Final Fantasy/Zelda type RPG.  At the moment, it's in the GRRRR-WTF!?! Stage of development.  It seems I'm constantly redefining all my data structures, code flow and such; so the main program isn't ready for a good demo yet.  For now though, I'll share the title screen, some jazzy intro music (turn the volume up and enjoy it!), and show off some of the pretty pictures.

Note, the code to run just the demo itself might seem a bit confusing -- that's because I'm using a few precompile scripts with Dav's IDE to alter the code before compiling.  Game.bas is the code I work with, Game.BAK is the code that QB64 compiles to make Game.exe.

I'm actually quite happy with the menu system though.  It makes use of a full feature box routine which auto-centers the text, lines everything up pretty, and sets us up for a VERY easy way to read the mouse input and interact with the proper area on the screen.  :)

So for now, just crank the tunes up, stare at the pretty title screen, and be aware that someday, sometime in the future, I'm going to have a nicely developed little RPG to show off. 

NOTE: This is SDL version still, so it'll need to be extracted either where QB64 is, or else you need to have the QB64 DLLs in a system directory (or else copy them over to go with this).   I figured since this was the Qb64 boards, everyone here should have the DLLs already, so I didn't feel a pressing need to include them for download.  ;)
http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

Lachie Dazdarian

  • Sr. Member
  • ****
  • Posts: 280
    • http://games.freebasic.net
Re: Destiny's Awakening
« Reply #1 on: November 10, 2012, 03:27:37 am »
I hate you. ;)

Anyway, thanks for sharing this with the community. Looking forward to first screenshots from the game. Planning to use original graphics? I wish more people talked about their projects. It's really what keeps the juices flowing in the community, but from experience, I know many developers fear that when they showcases something, that they will have to meet the community expectations in the future. Wrong stance.

Anyway, in my FBGD forum I have a thread "What are you working on now?", which I think is a cool idea for small blurbs and updates on people's WIP. It runs nicely without anyone's obligation to update with constants news, while that perhaps is often the case with a separate thread on one's project.

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #2 on: November 10, 2012, 05:58:39 am »
I hate you. ;)

You can blame my daughter for that.  She didn't think sharing a demo of the title screen alone was good enough, so I added an "Easter egg" for the truly talented to find.  ;)

It'll be a while before I have any really decent screenshots or anything to share, as I've more of less sat down over the last few days and unraveled everything for a better, more expansive file structure.

For example, maps are made from square grids.  Instead of having maps start at 0,0 and expand, now you set the dimensions as wanted.  From there, we track the attribute of each square in the grid by:
MapPiece(x,y):
north
South
East
West
Up
Down
TeleportIn
TeleportOut
ScriptOnEnter
ScriptOnExit

N/S/E/W track expanded movement from that square.  0 = can't move that way.  1 = full movement that way (basic overland walking in grassland). 2 = raft. 4 = ship 8 = hover. 16 = fly. 32 = horse 64 = climb. 128 = spirit/wraith mode...

So just to track movement alone, that's a lot of junk to track for each square.  Add in scripts for locked doors, checking inventory for special skills/items/quests, and just keeping up with whether a character can move from point A to point B can be a task...

I didn't want to go for something minor, so I set my goal to be a long term project that could compare to the commercial RPGs I liked growing up.  I don't want to remake Dragon Warrior or Final Fantasy, but I want to come up with something original that will be just as entertaining to play.  If all goes well, I might have the intro dungeon up and going by the new year, but I won't even commit to that.  As I add skills, items, and depth to the game, I tend to go back and expand and alter things. 

I've unraveled this project soooo many times now, I don't know if I'll ever have what I want from it.  But the fun sometimes is in the journey, if not the destination.  :)

http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

iamdenteddisk

  • Hero Member
  • *****
  • Posts: 2735
Re: Destiny's Awakening
« Reply #3 on: November 10, 2012, 06:27:35 am »
I am glad someone else notices how slow forthcoming the really complex high quality demos have become here. Qb64 has some awesome power that hasn't yet been exposed or really shared with other user's..

role call for the guru's, if your good, help someone else learn how too!

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #4 on: November 10, 2012, 02:06:09 pm »
A very quick demo of the basic computer awareness routine for mobs in DA.  (This is also how I work character lightsources.)

Code: [Select]
TYPE Coordinate
    x AS LONG
    y AS LONG
END TYPE

TYPE Rectangle
    x1 AS LONG
    y1 AS LONG
    x2 AS LONG
    y2 AS LONG
END TYPE

TYPE Direction
    North AS _BYTE
    South AS _BYTE
    East AS _BYTE
    West AS _BYTE
    Up AS _BYTE
    Down AS _BYTE
END TYPE

TYPE GridInfo
    Move AS Direction
    Sight AS Direction
    Hear AS Direction
    TeleportIn AS _BYTE
    TeleportOut AS _BYTE
    ScriptOnEnter AS LONG
    ScriptOnExit AS LONG
    Status AS _BYTE
END TYPE

DIM Map(-10 TO 10, -10 TO 10) AS GridInfo
DIM display AS Coordinate
DIM char AS Coordinate
MapWidth = 32 * (UBOUND(map, 1) - LBOUND(map, 1) + 1)
MapHeight = 32 * (UBOUND(map, 2) - LBOUND(map, 2) + 1)

map& = _NEWIMAGE(MapWidth, MapHeight, 32)
SCREEN map&
CLS
_SCREENMOVE _MIDDLE
DIM LightGray AS LONG
LightGray = _RGB32(50, 50, 50)
'Draw a grid for easy reference
FOR i = 0 TO MapWidth STEP 32
    LINE (0, i)-(MapHeight, i), LightGray
NEXT
FOR i = 0 TO MapHeight STEP 32
    LINE (i, 0)-(i, MapWidth), LightGray
NEXT
'Save the blank grid for refreshes or updates
bg& = SaveBackground&
f& = _LOADFONT("cour.ttf", 32): _FONT f&
COLOR _RGB32(255, 0, 0), 0: _PRINTMODE _KEEPBACKGROUND

char.x = 0: char.y = 0 'Character's starting location

'Display the character
display.y = (char.y + 10) * 32 + (32 - _FONTHEIGHT(f&)) / 2
display.x = (char.x + 10) * 32 + (32 - _PRINTWIDTH("X")) / 2
DO
    lightlimit = VAL(INPUT$(1)) 'This is as far as our character can see
    RestoreBackground bg&
    _PRINTSTRING (display.x, display.y), "X"
    'reset our limit as the user changes the light limit
    FOR i = -10 TO 10
        FOR j = -10 TO 10
            Map(i, j).Status = 0
        NEXT
    NEXT
    'Map(char.x,char.y).status = -1 'We have light where the character stands
    Xlight = lightlimit
    Ylight = lightlimit
    mapcheck = 0
    DO
        FOR i = 0 TO Xlight
            FOR j = 0 TO mapcheck
                Map(char.x + i, char.y + j).Status = -1
                Map(char.x + i, char.y - j).Status = -1
                Map(char.x - i, char.y - j).Status = -1
                Map(char.x - i, char.y + j).Status = -1
            NEXT
        NEXT
        mapcheck = mapcheck + 1
        Xlight = Xlight - 1
    LOOP UNTIL Xlight < 0
    FOR X = -10 TO 10
        FOR y = -10 TO 10
            IF Map(X, y).Status THEN
                xline = (10 + X) * 32: yline = (10 + y) * 32
                LINE (xline, yline)-(xline + 32, yline + 32), _RGBA32(255, 255, 0, 100), BF
            END IF
        NEXT
    NEXT
LOOP UNTIL lightlimit = 0
SYSTEM


FUNCTION SaveBackground&
SaveBackground& = _COPYIMAGE(0)
END FUNCTION

SUB RestoreBackground (Image AS LONG)
_PUTIMAGE , Image, 0
END SUB

Copy and run the code.  At first, all you'll have is a simple grid layout with a red X in the center of it.  Since this is just a demo, I'm not worried about adding the nice map graphics or  player icons here -- this is just to illustrate how light works, and how creatures learn to respond to players.

Use the number keys from 1-9 to change the range of your sight.   For a player, this might be the range of a light source in a dungeon.  For a creature, it might be how far they see or hear.

It's a simple little routine, and it generates a nice glow around our subject.  Simple, and effective, isn't it.  ;)

If you notice our Map info, we track a lot of things for each point in the grid:
    Move AS Direction
    Sight AS Direction
    Hear AS Direction
    TeleportIn AS _BYTE
    TeleportOut AS _BYTE
    ScriptOnEnter AS LONG
    ScriptOnExit AS LONG
    Status AS _BYTE

The move tells us if a person  or creature can move in such a given direction.  So if Map(x,y).Move.North is true, then a character/creature can move North.  (Note: We store a number here that tells us what an actor needs to move in this direction.  A creature with flying might very well move across a river, that the character can't.)

We also determine at each square (the demo is just the very basic start of the game logic to check these conditions), if the actor can see or hear any farther in that direction.   This demo assumes you're in a huge, open area.  The game checks to see if the area to the north of each actor is a wall or not.  Is the creature something that can hear through walls?  Can it see through them?  Will it respond to the character if they're behind something?

Note, most creatures don't have a 360% line of sight.   (some do though, depending on creature), so it's possible a character can sneak behind a creature and avoid a fight completely.   (Of course, most creatures aren't deaf either...  Get too close, and they will hear you and turn to investigate!)

So by expanding on this little method, we generate a field of vision, and field of hearing suitable for each creature on our map.  Then the AI kicks in and decides if the creature in question wanders randomly, heads towards a disturbance, tries to hide, runs away, or whatever might be appropriate.

A neat little routine, with lots of expandable potential.  ;)

(The only thing I'm afraid of is that on a huge map things might get too complex and slow down the game for some people to the point it won't be playable.   I'm hoping not -- QB64 seems to handle number crunching and such very nicely -- but I really won't know until I have several dozen actors up and moving on a large 300x300 grid or something.  I'm afraid I'll either have to break maps down into segments to only track portions of things at a time, or else I'll have to find a different method for creature awareness routines.)


NOTE: This assumes you have the courier new font in the same directory as QB64.  I keep one there for simplicity's sake.  If it errors out on you, change line 54 to:
Code: [Select]
f& = _LOADFONT("C:\Windows\Fonts\cour.ttf", 32): _FONT f&   

Assuming of course that you have a windows machine.  On Linux/Mac, you'd need to point the file to the proper place on your drive to find cour.ttf.   

It'll still run without the font, but the X just isn't the proper size...  Run it, and ignore the error if it pops up and you don't feel like changing the code to point to the proper font.  The light still displays as it should for you.  :)
« Last Edit: November 10, 2012, 02:13:54 pm by SMcNeill »
http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #5 on: November 10, 2012, 06:16:56 pm »
Since I was asked nicely, I'll expand the demo just a bit to show how we'd move our character as well.

Code: [Select]
TYPE Coordinate
    x AS LONG
    y AS LONG
END TYPE

TYPE Rectangle
    x1 AS LONG
    y1 AS LONG
    x2 AS LONG
    y2 AS LONG
END TYPE

TYPE Direction
    North AS _BYTE
    South AS _BYTE
    East AS _BYTE
    West AS _BYTE
    Up AS _BYTE
    Down AS _BYTE
END TYPE

TYPE GridInfo
    Move AS Direction
    Sight AS Direction
    Hear AS Direction
    TeleportIn AS _BYTE
    TeleportOut AS _BYTE
    ScriptOnEnter AS LONG
    ScriptOnExit AS LONG
    Status AS _BYTE
END TYPE

DIM Map(-10 TO 10, -10 TO 10) AS GridInfo
DIM display AS Coordinate
DIM char AS Coordinate
DIM MapLimit AS Rectangle
DIM UserInput AS STRING
MapLimit.x1 = LBOUND(map, 1): MapLimit.x2 = UBOUND(map, 1)
MapLimit.y1 = LBOUND(map, 2): MapLimit.y2 = UBOUND(map, 2)
MapWidth = 32 * (MapLimit.x2 - MapLimit.x1 + 1)
MapHeight = 32 * (MapLimit.y2 - MapLimit.y1 + 1)

map& = _NEWIMAGE(MapWidth, MapHeight, 32)
SCREEN map&
CLS
_SCREENMOVE _MIDDLE
DIM LightGray AS LONG
LightGray = _RGB32(50, 50, 50)
'Draw a grid for easy reference
FOR i = 0 TO MapWidth STEP 32
    LINE (0, i)-(MapHeight, i), LightGray
NEXT
FOR i = 0 TO MapHeight STEP 32
    LINE (i, 0)-(i, MapWidth), LightGray
NEXT
'Save the blank grid for refreshes or updates
bg& = SaveBackground&
'f& = _LOADFONT("cour.ttf", 32): _FONT f&
COLOR _RGB32(255, 0, 0), 0: _PRINTMODE _KEEPBACKGROUND

char.x = 0: char.y = 0 'Character's starting location

'Display the character
display.y = (char.y + 10) * 32 + (32 - _FONTHEIGHT) / 2
display.x = (char.x + 10) * 32 + (32 - _PRINTWIDTH(CHR$(1))) / 2
_PRINTSTRING (display.x, display.y), CHR$(1)
UserInput = "A"
DO
    IF UserInput <> "" THEN
        SELECT CASE ASC(LEFT$(UserInput, 1))
            CASE 0
                SELECT CASE ASC(RIGHT$(UserInput, 1))
                    CASE 75 '(left arrow)
                        char.x = char.x - 1
                        IF char.x < MapLimit.x1 THEN char.x = MapLimit.x1
                    CASE 72 '(up arrow)
                        char.y = char.y - 1
                        IF char.y < MapLimit.y1 THEN char.y = MapLimit.y1
                    CASE 77 '(right arrow)
                        char.x = char.x + 1
                        IF char.x > MapLimit.x2 THEN char.x = MapLimit.x2
                    CASE 80 '(down arrow)
                        char.y = char.y + 1
                        IF char.y > MapLimit.y2 THEN char.y = MapLimit.y2
                END SELECT
            CASE 27
                SYSTEM
            CASE 48 TO 57
                lightlimit = VAL(UserInput) 'This is as far as our character can see
        END SELECT
        RestoreBackground bg&
        display.y = (char.y + 10) * 32 + (32 - _FONTHEIGHT) / 2
        display.x = (char.x + 10) * 32 + (32 - _PRINTWIDTH(CHR$(1))) / 2
        _PRINTSTRING (display.x, display.y), CHR$(1)
        'reset our limit as the user changes the light limit
        FOR i = -10 TO 10
            FOR j = -10 TO 10
                Map(i, j).Status = 0
            NEXT
        NEXT
        Xlight = lightlimit: Ylight = lightlimit
        mapcheck = 0
        DO
            FOR i = 0 TO Xlight
                FOR j = 0 TO mapcheck
                    IF char.x + i <= MapLimit.x2 AND char.y + j <= MapLimit.y2 THEN Map(char.x + i, char.y + j).Status = -1
                    IF char.x + i <= MapLimit.x2 AND char.y - j >= MapLimit.y1 THEN Map(char.x + i, char.y - j).Status = -1
                    IF char.x - i >= MapLimit.x1 AND char.y - j >= MapLimit.y1 THEN Map(char.x - i, char.y - j).Status = -1
                    IF char.x - i >= MapLimit.x1 AND char.y + j <= MapLimit.y2 THEN Map(char.x - i, char.y + j).Status = -1
                NEXT
            NEXT
            mapcheck = mapcheck + 1
            Xlight = Xlight - 1
        LOOP UNTIL Xlight < 0
        FOR X = -10 TO 10
            FOR y = -10 TO 10
                IF Map(X, y).Status THEN
                    xline = (10 + X) * 32: yline = (10 + y) * 32
                    LINE (xline, yline)-(xline + 32, yline + 32), _RGBA32(255, 255, 0, 100), BF
                END IF
            NEXT
        NEXT
    END IF
    UserInput = INKEY$
LOOP
SYSTEM

FUNCTION SaveBackground&
SaveBackground& = _COPYIMAGE(0)
END FUNCTION

SUB RestoreBackground (Image AS LONG)
_PUTIMAGE , Image, 0
END SUB

Use 0-9 for the size of the light.
Arrow keys move our little hero. 
Esc quits the demo.


As for generating obstacles and the mobs in the game and having them do their thing, I'm not ready to demo that logic yet.  It's still being tweaked a bit, but it works very much like this.

Creatures wander randomly from their spawn point (if set to Approach or Wander mode.  Patrol mode has a set path, and Stay mode keeps them in one spot -- like a shopkeeper sitting on a stool.).  If they see (consider the light range to be their sight) or hear (a secondary light range) something of interest, they move towards it to check it out.  (Unless they're in Stay mode - even patrolling mobs will veer off-course to intercept something they consider suspicious.)

Once the range between the creature and their target becomes 0 (it catches them!), then a script event happens.   (Maybe a battle, maybe a dialog opens up from a towns-peon who begs for help and gives a quest...)  If a player gets out of sight and sound, then the mobs gets confused, wanders for a few moments, and then goes back to it's set job.   (Wandering, Patrolling, what-not.)  They usually try to go back to their spawn spot if you lose them, and resume their tasks from there if they're able. 

It's not too complicated.  Not really.  :)

Note: I also took out the font reference, so it shouldn't be an issue for anyone anymore.  It just gives us a slightly smaller hero, which isn't a big deal at all for a simple demo.  :)
http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

OlDosLover

  • Moderator
  • Hero Member
  • *****
  • Posts: 5320
  • OlDosLover
Re: Destiny's Awakening
« Reply #6 on: November 11, 2012, 01:59:52 am »
Hi all,
    Very nice looking and sounding Demo. I realy love the background picture. Of what and where is this landscape?
OlDosLover.

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #7 on: November 11, 2012, 05:41:57 pm »
Hi all,
    Very nice looking and sounding Demo. I realy love the background picture. Of what and where is this landscape?
OlDosLover.

I'm not sure.  It's one of those free-to-use images I found on the web which I thought was pretty, so I saved it to drive.  I'm a digital pack-rat -- tend to save everything that I find the least bit interesting.  When I was working on a title screen, I flipped though several hundred image files on the computer until I found this one again.  It seemed to fit what I was looking for -- something nice and peaceful; magical looking.   An Earth landscape that looks like it might also belong to a fantasy realm...

Feel free to use it for you own use if you want.  It's a public domain picture, of that much I'm certain.  I save questionable right videos/music/images in a different folder just so I won't ever have any problem if something comes up in the future and I decide to market a project commercially for anything.  :)
http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

OlDosLover

  • Moderator
  • Hero Member
  • *****
  • Posts: 5320
  • OlDosLover
Re: Destiny's Awakening
« Reply #8 on: November 11, 2012, 07:33:05 pm »
Hi all,
    Thanks it sould be a lovely wallpaper picture. Was that Linda Blair form the Exorcist move?
OlDosLover.

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #9 on: November 11, 2012, 07:45:18 pm »
The pop-up I think is the girl from The Ring.  At least I think that's where it's from.  http://www.wallpapergate.com/wallpaper16088.html

http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #10 on: April 27, 2014, 07:16:57 am »
Even though it's been ages since I posted in here last, I'm still slowly plugging away at my massive 2d game.  I don't know if I'll ever end up pulling all the elements together for this thing as it's an incredibly large visionary project of mine, but I *am* still making progress!   If you look in the sample area, you'll see all sorts of little routines that I've shared that's came from this thing (some easy AI pathfinding routines, character communication screens, pop-up windows, and I don't know what all...), but here's a little teaser of the size and scale of the project that I'm working with:

Code: [Select]
DEFLNG A-Z
WS = _NEWIMAGE(640, 480, 32)
SCREEN WS
_TITLE "Entaria Overmap"

Map = _LOADIMAGE("Entaria.png", 32)


Top = 0
Left = 0

DO
    _LIMIT 120
    _PUTIMAGE (0, 0)-(640, 480), Map, WS, (Left, Top)-(Left + 640, Top + 480)
    IF _KEYDOWN(27) THEN SYSTEM
    IF _KEYDOWN(18432) THEN Top = Top - 1: IF Top < 0 THEN Top = 0
    IF _KEYDOWN(19200) THEN Left = Left - 1: IF Left < 0 THEN Left = 0
    IF _KEYDOWN(20480) THEN Top = Top + 1: IF Top > 1520 THEN Top = 1520
    IF _KEYDOWN(19712) THEN Left = Left + 1: IF Left > 1360 THEN Left = 1360
    _DISPLAY
LOOP

Download the map below and then run it with the small demo above.   You can see a grid which overlays the "mini-map"; each grid is its own game screen of 100x100 hexes... 

Anyone want to take a guess at how large the overall "overworld" map is?  ;D

And then add in a multi-layer underground map, which the players can explore for dungeons and such as they head down towards the world's core...

Darkstar isn't the only one who can dream big!  His is an universe-spanning game of massive proportions.  This is my world-spanning fantasy game of epic vision. 

It's soooo large, I might never complete it, but I sure as heck am enjoying the ride along the way as I try and bring the vision to life.   ;D
http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

Pete

  • Hero Member
  • *****
  • Posts: 7221
  • Cuz I sez so varmint!
Re: Destiny's Awakening
« Reply #11 on: April 27, 2014, 08:54:33 pm »
It looks like some place Delta Airlines might fly to. I wonder how Lacky is doing with his GDFB forum? It seems Destiny awakens about as fast as my teenage son does. I've been trying to get him up and around since 2012, too. Oh well, just remember, tenacity can only be obtained if you keep on trying.

Pete  ;D
Give a man a program, and he does one thing for a day. Teach a man to program, and he does one thing for a lifetime.

TerryRitchie

  • Hero Member
  • *****
  • Posts: 2806
  • Press any key to continue or any other key to quit
Re: Destiny's Awakening
« Reply #12 on: April 28, 2014, 08:49:39 am »
At the moment, it's in the GRRRR-WTF!?! Stage of development.  It seems I'm constantly redefining all my data structures, code flow and such; so the main program isn't ready for a good demo yet.

LOL, I thought I was the only one that went through the GRRRR-WTF episodes of programming! A post you made a while back inspired me to remake an old classic and I'm in that stage now. Slowly slagging my way out of it though.

Awesome looking game so far Steve! Can't wait for the final version.

SMcNeill

  • Moderator
  • Hero Member
  • *****
  • Posts: 5831
Re: Destiny's Awakening
« Reply #13 on: April 28, 2014, 01:21:39 pm »
Awesome looking game so far Steve! Can't wait for the final version.

Afraid you're going to have to.  It'll be 2020 before it'll be close to finished, I think.  ;)

Thing is, I wanted to do something different than what we've seen before, so I'm trying to think completely out of the box.  For example, the map isn't a square-grid like most people are used to; it's a hexagonal map.

The reason?

It makes LOVELY game mechanics.  ;D

Battles will take place on the same style maps, so it's easy to tell a characters facing.  This gives us several natural positions:

Forward -- the direction the character is looking.
Left Flank, Right Flank -- the hexes immediately to the side and peripheral to the character.  We can block or dodge (with the right weapon or skill) these attacks still.
Left Rear, Right Rear Flank -- beyond our hero's peripheral vision.  No blocking attacks from here.
Rear Flank -- directly behind the hero...  A place you never want an enemy with a knife!

Hexes give us natural battle positions.  :)

They also give us GREAT area damage abilities.   Anyone can understand what a 2-hex bomb would affect, but with a square-grid, how large is a 2 radius?  Is it a 2x2 square block, or a 3x3 square block, or a 3x3 cross with the 4 outer edges not affected?

And bouncing objects are a breeze to handle with hex-mechanics.  Say you throw a flaming wine bottle and it hits a shield and is deflected without breaking.   If it traveled in from the NE hex, from a SW trajectory, hit the object and bounced, it'd leave in the NW hex, going NW....

.........

Soooo much potential...

So little existing resources!   

Tiles are set up for square-grids.  Spite sheets have actors facing and walking N,S,E,W.  Any examples you find out there seem to be coded for a square grid.   Movement is either 4-way or 8-way with the diagonals allowed.   

I feel like I'm really reinventing the wheel sometimes. 

Table-top miniature RPGs use hex-grids for the ease of mechanics and actor positioning.  Why did game makers decide that everything needed to be Up, Down, Left, Right mechanics??
http://bit.ly/TextImage -- Library of QB64 code to manipulate text and images, as a BM library.

http://bit.ly/Color32 -- A set of color CONST for use in 32 bit mode, as a BI library.

OlDosLover

  • Moderator
  • Hero Member
  • *****
  • Posts: 5320
  • OlDosLover
Re: Destiny's Awakening
« Reply #14 on: July 07, 2014, 03:02:15 pm »
Hi all,
    Love the map and the potential of this idea Steve. Hope it doesnt take until 2020 to finish  though!
OlDosLover.