[DEVLOG] Prelude to a Dream

Looking great. But two things have me worried - why is the player nude? and why is carpet in the buildings green?

2 Likes

Its a template sprite so it has no clothes. The grass carpet is because that area will be covered by a door sprite.

1 Like

Cool … just playing with ya!

Using cobblestone would be better then :stuck_out_tongue:

It looks amazing! Gotta love walking behind a roof

Been a little bit since I’ve been able to work on it as I had quite a bit of different stuff going on these last couple weeks.

Today I got some more work done on the interior tileset:
image
Here is some test houses to see how well the different tiles fit together:


Might need to do some minor touch-ups to the bed, but I’ll let it sit for a bit and see if anything comes to mind. Otherwise I like how it’s turning out so far, just need to do some seating (was thinking of bench/booth style seating to save on tiles).

I like how my furniture is coming along so far, and once these are done I can start work on the maps for the different buildings in the starting town.

Another thing I started was a simple progress tracker where I have the game broken up into 3 acts, with each act broken up into stages and each stage is broken down into the different pieces (maps, tilesets, etc) that need to be completed and their individual estimated percent completion. The stages, acts, and game are then able to calculate a rough estimate of the overall completion percentage.

Here’s a screenshot of the progress tracker (I’ve blurred the notes column since it contains potential spoilers):


As you can see I’ve still got a long way to go, but some stages will be completed faster (especially ones that don’t need any new tiles and just require a few maps).

As you can see I’ve still got a ways to go (and some additional planning on content), but once I finish the first stage of Act 1 I’ll try and put together a demo build so others can get a nice glimpse of the game thus far.

8 Likes

What program is that being used for progress tracking? I’ve been looking around for something like that to see if it could help me both to keep track of ideas and to help motivate by seeing more tangible progress in my own projects.

This game is looking more and more amazing all the time. And the tiles look great! Really encouraging to see visible progress like this.

It looks like it’s just a normal spreadsheet.


If you use GitHub I recommend giving project boards and milestones a go.
I’ve used them once or twice before (e.g. here and here).

2 Likes

Yep. Just a spreadsheet in LibreOffice with some conditional formatting for the progress bars. Made several narrow columns and merged them so I could do the indentations.

2 Likes

Ah the progress bars are what I was mostly curious about:)

I think it’s the Data Bar ... style conditional formatting.
Choose Percent, set the lower to 0 and the other to 100,
then in More options ... you can change the colour and there should be a checkbox for enabling the solid bar instead of a gradient bar (my version is really out-of-date so it doesn’t have that checkbox).

I found a video that demonstrates, but I hope your French is up to snuff. :P

1 Like

Awesome! Thank you :smiley: I’ll see how it works out!

1 Like

That’s a nice framerate you got there :slight_smile:

1 Like

Today I finished the interior tileset for the town:
image
Then I did up the tilemaps for the 3 floors of the inn:


Here’s what’s left so far for Act 1:

Act 1 is getting closer and closer to completion, still got a bit to go though. Progress is always slower on the first few areas since I’m still laying out the foundation for the game (map events, tilesets, etc.). Later stages won’t take as long to complete because the bulk of the work will already be done.

As it stands the first stage is looking like it’ll be about 30-60 minutes of gameplay depending on how much time you spend exploring the town before getting started.

4 Likes

This games graphics are becoming an asset in itself

2 Likes

Spent the majority of the day today working out the map event system. Got it somewhat finalized and was able to test out a simple teleport event going from the town map to the inn. Tested on HW and the teleport takes just a fraction of a second (noticeable, but barely).


Now that that’s out of the way I can start getting all the map events in place. Still need to create a few maps, one more tileset, a battle background, one enemy, one boss, and draw the player/npc sprites.

Hopefully Chapter 1 will be done soon enough and I can publish a WIP demo of everything so far.

8 Likes

This is looking really good! Cannot wait to play the WIP demo.

7 Likes

Nice! Changing also the music feels great :+1:

4 Likes

That looks so pro

5 Likes

Yes, every time i see it it is looking even better and it never didn’t look anything but great to begin with

5 Likes

Currently working out the details for a simpler xml data format. At the moment my data is stored in text files as comma separated byte values in the form 0xXX (where XX is the hexadecimal value).

A couple examples of why this is important:
Here we see the current structure for storing enemies:

struct EnemyAction
{
  uint8_t randMax;
  uint8_t mpUsed;
  uint16_t attackMessage;
};
struct EnemyData
{
  uint16_t experience;
  uint16_t hp;
  uint16_t attack, defense, agility, magic;
  uint16_t introMessage;
  uint16_t outroMessage;
  uint8_t mp;
  uint8_t gold;
  uint8_t randMax;
  uint8_t unused;
  EnemyAction actions[4];//16
};

This data is stored in a file like so (this is the current values for the snake enemy):

0x02,0x00, 0x02,0x00,
0x02,0x00, 0x08,0x00, 0x05,0x00, 0x00,0x00
0x08,0x00, 0x09,0x00,
0x00, 0x02, 0x01, 0x00,
0x01, 0x00, 0x0A,0x00,
0x00, 0x00, 0x00,0x00,
0x00, 0x00, 0x00,0x00,
0x00, 0x00, 0x00,0x00

This is clearly not easy to read or modify, especially with multi-byte values since they need to be stored in little-endian order (2 as a 16-bit value would be 0x02,0x00 instead of 0x00,0x02), which makes values greater than 255 especially difficult to read/edit.

The events are stored like this:
inside the data file:

This corresponds to an event at x=7, y=10, flags=FLAGS_DOOR, sprite=0
0x07, 0x0A, 0x02, 0x00
This indicates to offset 0 bytes into the events file.
0x00, 0x00, 0x00, 0x00

This event is at 27,5 with a sprite=0 and flags=FLAGS_ACTIVATE_BUTTON
0x1B, 0x05, 0x01, 0x00
This event starts with byte offset 12 in the events file
0x0C, 0x00, 0x00, 0x00

This is an empty event indicating there are no more events to load
0x00, 0x00, 0xFF, 0x00
0x00, 0x00, 0x00, 0x00

The subsequent events file looks like this:

Hide screen: transition=MASK_OUT, speed=1 (fastest)
0x00, 0x05, 0x01
Teleport: map=2, x=7, y=14, facing=UP
0x02, 0x02, 0x07, 0x0E, 0x00
Show screen: transition=UNWIPE_OUT, speed=1
0x01, 0x04, 0x01
End event processing (end of first event teleporting into the inn)
0x14
Start of second event (TOR Door)
Show dialog window
0x03
Buffer message: id=20, length=24
0x05, 0x14,0x00, 0x18
Show message
0x07
Buffer message: id=21, length=24
0x05, 0x15,0x00, 0x18
Show message
0x07
Buffer message: id=22, length=24
0x05, 0x16,0x00, 0x18
Show message
0x07
Wait for button press
0x08
Hide dialog window
0x04
End event processing
0x14

Eventually I will put together a rudimentary editor for editing everything in one convenient tool, but for now the following format xml format will be far easier to manually edit:

<!-- enemy data --->
<enemy name="Snake">
  <stats hp="2" mp="0" attack="2" defense="8" agility="5" magic="0"/>
  <rewards experience="2" gold="2"/>
  <messages intro="8" outro="9"/>
  <actions randMax="0">
    <action randMax="1" mpUsed="0" message="10"/>
  </actions>
</enemy>
<!-- map events data -->
<events>
    <event x="7" y="10" flags="door" sprite="0">
      <hideScreen transition="maskOut" speed="1"/>
      <teleport mapID="2" x="7" y="14" dir="up"/>
      <showScreen transition="unwipeOut" speed="1"/>
    </event>
    <event x="27" y="5" flags="button" sprite="0">
      <showDialog/>
      <bufferMessage message="21" length="24"/><!--This door is broken and_-->
      <showMessage/>
      <bufferMessage message="22" length="24"/><!--cannot be opened without-->
      <showMessage/>
      <bufferMessage message="23" length="24"/><!--a special ability.______-->
      <showMessage/>
      <waitButtons/>
      <hideDialog/>
    </event>
  </events>

As you can see this format will be far easier to read/write by hand and would output the same results as the raw hex data.

For now here’s a quick video of this screen transition (I really like it for entering/exiting buildings) and an example dialog:

My main struggle with getting stuff done has nothing to do with lack of motivation, but more to do with some personal issues bogging my mind down. Seems everytime I post an update to this DevLog, no matter how small of an update, everyone gets more excited even just for a glimpse of the first chapter as a playable demo. The level of feedback is really helping with motivation and the community here has re-invigorated my life-long passion of game development, it’s just taking me some time to get back into the flow of everything and find my groove again.

As a side note for those curious about my pinball engine:
I do intend to finish it after this project. Main reason this project has taken more focus is because it also encompasses everything I struggled achieving in the past. The quality of the artwork I’ve been able to do on this project is way beyond anything I ever dreamed of being able to accomplish as I’ve never seen myself as an artist, but here I am and the artwork on this continues to blow me away. This project is allowing me to learn a valuable skill set that I’ve always wanted to be able to do and the constant feedback and encouragement has just been absolutely incredible.

Thank you guys for the constant motivation and encouragement.

11 Likes