Emily's Curious Adventure

Discussion in 'General Discussions' started by el_pango, May 5, 2011.

  1. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    A few weeks ago, I posted a prototype of a directional-gravity platformer to General Talk, and it seems to have been quite a success. I'm now moving forward with making an entire game out of it. Herein shall be my devblog.


    Occasionally, I'll post demos as appropriate.


    I should mention that it's going to be a 2D action RPG with weird gravity, fishing and cooking skill trees, along with their attendant minigames and a wee bit of romance to boot. My dev setup is as follows:

    • Language: C
    • Libraries: Allegro 4.3, DUMB,FBlend
    • Images: GIMP 2.6
    • Sounds: Goldwave, Milkytracker
    • Caffeine: Yes.
     
    Last edited by a moderator: Feb 6, 2016
    Tags:
  2. Farox

    Farox Certified Guru

    Joined:
    Jan 8, 2009
    Messages:
    2,018
    Location:
    Italy
    Great news. :)
     
  3. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Day 1.


    The first second task to overcome was how to handle lightmapping. (The real first task was to figure out how to draw directly to the hardware overlay, but that's covered on the wiki.)


    Because the game is 'only' 2D, but I want it to 'feel' very immersive and and emotionally compelling, having dramatic lighting is going to play a big part. Since I'm working in Allegro, I settled on the following:

    1. When loading a new map, the engine will also load an image that controls how tiles should be lit.
    2. The engine makes a copy of this image.
    3. Dynamic lights, like lanterns, fire, spell effects and the like get painted into the image from step 1.
    4. The image from step 1 is used as inputs to draw_gouraud_sprite().
    5. At the end of every frame, the lightmap image from step 1 is restored from the copy in step 2.


    The restoring part sounds expensive, but it really isn't - because the world is split into rooms, a bit like Maze Of Galious, the lightmap and the copy I'm restoring from only need to be 50x30, since a 400x240 display will hold about half those dimensions worth of 16x16 tiles, and I want each room to be at most two screens across. Most of the drawing time will be taken up by the gouraud-shaded tiles, and even though all of the shading and blending is happening on the CPU, it seems like a Pandora's up to the task, even at the stock 500 MHz, even with a MOD player running.


    I wrote a quick proglet to raycast from light positions to walls that should block light and save the output to a file. It's admittedly quite stupid, slow and performs a lot of ray-following it doesn't need to, but because lightmaps get made out of band on the content-authoring side, I don't care :) .


    With that sorted out, along with deciding to use Mappy as a tilemap editor, I tried to draw my first map to the screen, only to discover that - surprise! - draw_gouraud_sprite() doesn't fully take into account RGB when setting up the gradients between the corners of the sprite, and instead, just blindly interpolates between c1, c2, c3 and c4 (whoops). I guess, when it was originally written, no one ever expected handhelds to be fast enough to do colour lighting in software.


    I'll probably just rewrite it somewhere inside the game engine. I think, since all tiles are going to be 16 by 16 pixels anyway, I can probably replace some of the divisions with shifts.


    More later after work and hockey practice.
     
    Last edited by a moderator: May 6, 2011
  4. Nintendo

    Nintendo Nintendo Switch

    Joined:
    Oct 8, 2005
    Messages:
    12,515
    Location:
    Melbourne, VICTORIA - AUSTRALIA
    Have you entered the Riot Tag-Team Coding Competition?
     
  5. Esn

    Esn (:";

    Joined:
    Mar 5, 2003
    Messages:
    3,239
    Location:
    Toronto, Canada
    I would appreciate it if people posted beta tests in the Beta testing forum instead of in General. I try to add all new PNDs to the three Pandorawiki software lists, but there's no way that I have time to check all the threads in General, so I only check certain subforums.


    Moderators here don't seem to be as diligent about moving threads to the correct forum as they are on GP32X.
     
    Last edited by a moderator: May 6, 2011
  6. bzar

    bzar A Commando

    Joined:
    Sep 22, 2008
    Messages:
    4,436
    Location:
    Finland
    ^ We need more mods. For one the voting thread for the platforming competition was still pinned in general talk the last I checked.
     
  7. Nintendo

    Nintendo Nintendo Switch

    Joined:
    Oct 8, 2005
    Messages:
    12,515
    Location:
    Melbourne, VICTORIA - AUSTRALIA
    That Blue Protoman kid is apply for modship, I think?
     
  8. Esn

    Esn (:";

    Joined:
    Mar 5, 2003
    Messages:
    3,239
    Location:
    Toronto, Canada
    Possibly Craig is vary of mods after what happened last time.


    P.S. "is apply for modship"? Let's speak English here, please.
     
    Last edited by a moderator: May 6, 2011
  9. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Hi ESN,


    Sorry, I had no idea I wasn't playing by the rules! The reason I'd rather post .PNDs here, at least during the early stages, is they'll most likely be quick unit tests of one or two features, rather than actual full gameplay, and as such, shouldn't be publicised just yet. Once I start to approach something vaguely alpha-like (all planned features implemented but not yet tuned, a level can be played in its entirety), I'll move them to the official beta test area. Is this acceptable, or would you and the mods rather have the rough-cut stuff show up there, too?


    Sony: I haven't. I suppose I might, but I really don't need anything other than a tester, and not even that yet. I also don't know if I can hit that deadline...


    Anyway,


    Day 2.


    I started to decide how the fishing minigame will play. Throughout the world, there will be tiles the player can stand on marked as 'fishable', and the default action for the attack button will switch from 'attack' to 'fish' if there are no monsters within a certain radius. Once the player has decided to fish, I'll blur the background and bring up the bar graph (see attached screenshot). The reticle will bounce from left to right and back again, and the player has to use the attack button again to stop it in the 'get fish!' area. After that, I'll internally do some kind of dice roll to determine what fish they'll get and what size it'll be. (Ignore the crazy lines in the background, I just wanted something back there that wasted some CPU time to check performance.)


    One problem I've run into is that the LCD on a Pandora does seem to ghost a bit more than I was expecting, making the reticle hard to see when it's moving quickly. I may have to make it bigger and/or darker and/or make the bar dark and the reticle light.


    Also, I've cooked up a reasonably non-harebrained story:

    I probably will make little progress this weekend, as the weather is nice and I want to get some hiking in...

    Screenshot_fish.png
     
    Last edited by a moderator: May 6, 2011
  10. Esn

    Esn (:";

    Joined:
    Mar 5, 2003
    Messages:
    3,239
    Location:
    Toronto, Canada
    Sure, that makes sense; thanks for considering. I do check the Dev section from time to time, it's software releases in the General section that I find hard to keep track of.


    I'll try it out, anyway; I'm not sure whether I'll post it or not, I guess it depends on how playable it is. Some games like "Panjoust" have very unfinished but playable betas, for example. I guess one advantage is that if you're looking for feedback, posting it (and clearly marking "beta" or "test" beside it, and linking to this discussion thread) might help some more people become aware of it and get you some feedback.
     
    Last edited by a moderator: May 7, 2011
  11. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Day 8.


    No, this project didn't die.


    One of the hardest parts of doing homebrew is staying motivated. It's easy to find reasons to just veg out in the evenings: long commute, bad day at work, etc. For the early part of the week, I failed pretty miserably at this, but I've resolved to put the wheels back onto the cart and keep going.


    I've decided to dump colour lighting until a point release; I sorta, kinda got it to work...I guess, but it didn't run well, and rather than spend weeks profiling it and holding up the actual 'game' parts of the game for this one feature, it seems like it'd be better to punt it until later.


    I have gotten my first map to display, although dim areas are too dim on a Pandora.


    Ignore the hideous tiles, they're just test tiles from a template tileset sheet I made specifically for testing.

    blargh.jpeg
     
  12. Nintendo

    Nintendo Nintendo Switch

    Joined:
    Oct 8, 2005
    Messages:
    12,515
    Location:
    Melbourne, VICTORIA - AUSTRALIA
    ^ Is that map cut off and there more to it?
     
  13. foxblock

    foxblock Asleep

    Joined:
    Jun 17, 2009
    Messages:
    1,365
    Location:
    Germany
    looking good, I am watching this :)


    I liked the initial prototype, it had several minor problems, but the core idea was good, I am interested to see what you will make of that idea.
     
  14. PokeParadox

    PokeParadox Founder of Pirate Games - Penjin Coder Staff Member

    Joined:
    Dec 8, 2005
    Messages:
    6,510
    Location:
    UK
    Keep it up, already like the look of the game at least! :)
     
  15. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Yep - each map will be 50 tiles by 30 tiles. The worlds will be room-based, kind of like Maze of Galious, and each room will be no larger than two screens high and two screens across.
     
  16. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Day 12.


    Not much to report - I really haven't had a lot of time on this thing. It looks like the girlfriend is traveling on the weekend, though, so that helps.


    My latest effort has been on making skies and weather effects. Here's what I got so far.


    You can't see it in a still, but the ocean and meteors are both animated. Once I have time to make the tropical island/karst tileset, my test map will probably look really beautiful and dramatic.

    blargh.jpeg
     
    Last edited by a moderator: May 18, 2011
  17. sebt3

    sebt3 homebrew player (P. & C.)

    Joined:
    Sep 9, 2008
    Messages:
    4,745
    Location:
    France
    Nice !
     
  18. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Day 13.


    No pretty screenshot today, but progress was still made:

    • Wrote a bunch of Lua scripts to make Mappy export the maps in the formats I wanted.
    • Created a daytime tropical island sky background.
    • Tweaked the nighttime tropical sky background slightly.
    • Reviewed and profiled code from a previous unfinished game to draw more atmospheric effects.



    Tonight, I will start on creating the various tilesets I'll need, but I don't expect to finish them in one go.
     
  19. el_pango

    el_pango Member

    Joined:
    May 31, 2006
    Messages:
    145
    Location:
    California
    Day 19.


    Yesterday's progress:

    • Added animated tile support.
    • Started working out the logic of how the game should decide which orientation an entity's sprite should be in.



    So far, here's what the roadmap looks like:


    *Animated sky backgrounds



    • Ocean waves

      done
    • Meteors

      done
    • Clouds
    • Aurora (may possibly borrow this from another project)
    • Tropical day backdrop
    • Tropical dusk backdrop
    • Tropical night backdrop




    *Particle system



    • Make self-contained and fire-and-forget from calling code
    • Explosion
    • Implosion
    • Implosion with whorl
    • Optionally parametrize colour




    *Entity movement



    • Directional gravity
    • Collision with world
    • Collision with other entities
    • Logic to appropriately rotate and flip sprite




    *Tile map



    • Can render and scroll correctly
    • Lightmapping
    • Allow glowing/additive blend sprites in foreground
    • Animated tiles
    • Allow glowing gravity arrows as needed and have them pulsate
    • Support for triggers (player can pass through tile, but it kicks off an event)




    *Decide how inventory will work, write up specs


    *Fishing



    • Bar graph/sliding reticle minigame

      done
    • Rod and reel casting noise when minigame begins
    • Rod and reel windup/pulling noise as reticle accelerates
    • Rainbow particle implosion on successful fish catch
    • Study how to increase visibility of reticle on LCD as needed
    • Tune difficulty




    *Cooking and forging



    • Decide whether to keep this in the game
    • UI for putting together four items in oven
    • Decide data structure for holding which groupings of items can craft what new items
    • Decide whether this will have a minigame attached or just be a dice roll carried out internally
    • Figure out whether these will be just healing items (feels kinda tacked on...?) or whether to make, say, learning how to bake a cake essential to a subplot




    *Story



    • UI for displaying character dialogue and system messages
    • Revise premise or optionally discard and come up with a new one
    • Come up with quests and dialogue (

      important!

      )




    *Monsters (partially blocked by entity movement and drawing stuff)



    • Decide what kinds of monsters should be in the game and how they should behave
    • Implement various AI patterns (for simplicity, these will be handled directly in the code and not scriptable)
    • (optionally) Find someone who can draw (!!)




    *Art and graphics and sound (partially blocked by monster designs and story)



    • Decide what environments/biomes there will be
    • Tileset for each biome




    *BGM and sound (partially blocked by monster designs and story)



    • Decide whether to go with samba and/or calypso themed music throughout the game if it all takes place on the same island




    It may take a while :) .
     
    Last edited by a moderator: May 24, 2011
  20. Nintendo

    Nintendo Nintendo Switch

    Joined:
    Oct 8, 2005
    Messages:
    12,515
    Location:
    Melbourne, VICTORIA - AUSTRALIA
    Thanks for the daily updates, mate. By the way, I can't be bothered Googling...but what are biomes? Same as environments?
     

Share This Page

Loading...