The Myth of Zayla

m8si

Active member
The Myth of Zayla Started as a ByteOff III entry, but as always I got a bit carried away and now I am going to develop and release a full game in 2023.

There will be many bugs to tackle and things to be done for sure. But having this awesome community supporting I believe it will be possible to release the game next year.

We'll see... šŸ˜…

 
Hope so. :)
I once had a dream that I would be able to make an NES game myself. Well that's now done, thanks to NESMaker. :) The next thing would be to make an actually good game for the NES xD
You got this man! But if you need any help with assembly just let me know! I'm pretty decent at it! Being the first nesmaker to get as far as I have with a fire emblem-esque game with movable tiles to clarify!
 

m8si

Active member
What if AI wrote the plot for the Myth of Zayla. xD
Make a story twist for a story where princess is kidnapped by undead army and a townsfolk goes on a rescue mission. On his journey he meets his guardian angel who has the power to revive him from death.


As the townsfolk embarks on his rescue mission, he quickly realizes that the undead army is much stronger than he anticipated. Despite his best efforts, he is soon overpowered and killed by the army.
Just as all hope seems lost, the townsfolk's guardian angel appears before him and revives him from death. The guardian angel reveals that she has been watching over him his entire life, and she believes in his ability to save the princess.
With renewed strength and determination, the townsfolk continues on his journey, and eventually comes face to face with the undead army's leader - the princess's own father, who has been turned into a vengeful undead creature.
In a surprising twist, the guardian angel reveals that she has the power to not only revive the townsfolk from death, but also to purify the undead, including the princess's father. With the help of the guardian angel, the townsfolk is able to defeat the undead army and save the princess, bringing peace to the kingdom once again.
 

m8si

Active member
Allright. This is going to be a long post...

THE CHANGE

So I redesigned the revive system and now you can revive also "on the spot". But only if you have collected enough coins. Coins are then being transferred to the player's guardian angel Mafaldrian and then player will be revived. If you have played the demo you may be familiar to the angel character and this kind of greedyness suits well for her. =D

WHY?

Most of the playtesters said the game was too difficult. So I had two options:
1. Make the game easier
2. Add health / extra lives for the player

I didn't want the game to be like a walk in the park so I choose to add lives to the game. However lives in a game where you never die and sometimes have to die in order to solve some puzzles wouldn't work very well. I tested some different approaches and finally came up of the idea that what if...

Reviving is now a paid service, but can be done in every place if you have 4 coins in your pockets. If you don't the game will send you back to a previous checkpoint where you can be revived by the angel. However she will take all of your money for her service.

Doing it like this solved another problem playtesters noticed. It was kind of annoying that you had to start from checkpoint every time you died. (Even though I tried to include plenty of them)

Thank you for reading this far! Here is a video where I show the whole system in action.

 
Allright. This is going to be a long post...

THE CHANGE

So I redesigned the revive system and now you can revive also "on the spot". But only if you have collected enough coins. Coins are then being transferred to the player's guardian angel Mafaldrian and then player will be revived. If you have played the demo you may be familiar to the angel character and this kind of greedyness suits well for her. =D

WHY?

Most of the playtesters said the game was too difficult. So I had two options:
1. Make the game easier
2. Add health / extra lives for the player

I didn't want the game to be like a walk in the park so I choose to add lives to the game. However lives in a game where you never die and sometimes have to die in order to solve some puzzles wouldn't work very well. I tested some different approaches and finally came up of the idea that what if...

Reviving is now a paid service, but can be done in every place if you have 4 coins in your pockets. If you don't the game will send you back to a previous checkpoint where you can be revived by the angel. However she will take all of your money for her service.

Doing it like this solved another problem playtesters noticed. It was kind of annoying that you had to start from checkpoint every time you died. (Even though I tried to include plenty of them)

Thank you for reading this far! Here is a video where I show the whole system in action.

I agree with the difficulty thing... "git gud" is my advice for players who say a game is too hard lol.
 

m8si

Active member
So you may have noticed I like to use AI sprites. (Mostly because I can't draw well myself) Here is another enemy that I will include in the game.

Meet HugBones! <3 :)

Dalle-2 Prompt: "skeleton monster 8 bit pixelart 16 by 16"
DALLĀ·E 2022-11-28 22.06.07 - skeleton monster 8 bit pixelart 16 by 16.png

The Result:
HugBones.png


And in action with animation
hugBones.gif
 
So you may have noticed I like to use AI sprites. (Mostly because I can't draw well myself) Here is another enemy that I will include in the game.

Meet HugBones! <3 :)

Dalle-2 Prompt: "skeleton monster 8 bit pixelart 16 by 16"
View attachment 6780

The Result:
View attachment 6782


And in action with animation
View attachment 6781
PLEASE! tell me about AI sprites! Where did you find a program that makes sprites?
 

m8si

Active member
Make a free account on https://openai.com/dall-e-2/

There you can ask the AI to draw you an image. Just put something like "8 bit, pixelart, 8by8 pixels" on your prompt

You get some free prompts / month but otherwise it is a payed service. And as you see in my examples, images need to be edited for NES
 

m8si

Active member
Edit: Password system is now working properly. Should I write a tutorial about it?

Before asking how it was done, the password system doesn't yet check for a correct password. :) Also please let me know if there is something wrong with my ancient english on the password screen. Thought it would be cool that gods spoke ancient english like the Deku Tree in Ocarina of Time.

 
Last edited:

m8si

Active member
Another AI inspired enemy. The Saus-Skele Dog!

Original by Dall-E 2 (Scary looking mummy lizard as 16 by 16 pixels pixelart in 4 colours)
DALLĀ·E 2023-01-01 20.56.43 - Scary looking mummy lizard as 16 by 16 pixels pixelart in 4 colours.png


After some ajustments for Nes (Note that he was originally a lizard but somehow transformed to a sausage dog in my mind when I made the image for NES)
Saus.png

Animated version of Saus
ezgif.com-gif-maker (1).gif
 
Another AI inspired enemy. The Saus-Skele Dog!

Original by Dall-E 2 (Scary looking mummy lizard as 16 by 16 pixels pixelart in 4 colours)
View attachment 6840


After some ajustments for Nes (Note that he was originally a lizard but somehow transformed to a sausage dog in my mind when I made the image for NES)
View attachment 6841

Animated version of Saus
View attachment 6842
Like the final version a lot!
 

m8si

Active member
Got some help from @JamesNES & @TakuikaNinja with calculating bits. See Is there a better way to count bits

Here is the usecase if someone is interested :)

In the game there is an energy tank system like in Metroid/Mega Man. Energy tanks (or in this case purses that can hold coins to buy your life back) can be found in hidden locations throughout the game but I need to some how keep track of which of them has been collected.

So here is what happens when player collects one:

E-tank (or purse) is a basic tile item containing a tilescript that ticks one of the bits of the purseSize byte.

Code:
LDA screenType ; Screen types for purses are 1,2,4,8 or 0001,0010,0100,1000   
    CMP #$09
        BCC +purse
        JMP +notPurse
        
            +purse:
            LDA purseSize   
            ORA screenType    ; tick the bit to make the e-tank as "found"
            STA purseSize    ; store to purseSize var.
                            ; eg. if e-tank 2 was collected and
                            ; no other was collected before purseSize becomes 0010
                                
            TriggerScreen screenType ; trigger the screen to prevent e-tank
                                     ; from respawning again
        +notPurse:

At this point you may think that why to bother storing the found e-tanks as bits? Isn't it easier to just use the built in TriggerScreen system. And the system is even used here in addition to this bit thingy?!? Why?

Yes.. For most cases that would be enough and you would be just fine with the triggered screens alone. However my game will have a password system and I am also building a password encryptor & decryptor. It is important to keep track the exact item player has collected and that's why I am using the bits. I could have four individual variables. One for each e-tank, but by doing like so, it would be a total waste of space.

The password system is not finished yet but here is the main principle:
While encrypting it will be storing the bits of the e-tanks as a low byte and levels player has cleared as high byte. Resulting in a 8-bit number like #%0001 0110
Then to prepare it for a password It will be split it into 3-bit & 2-bit chunks like this ---> #%000, #%101, #%10 then the system calculates a letter for each of these numbers. In this case the password for level 1 cleared & e-tanks #2 and #4 found would be AFC (0=A, 5=F, 3=C.) but that would be too weak password so it needs a checksum of somekind. Let's just add those numbers together to get a checksum. The resulting password would be AFCI.

Then to make it more harder to guess the password can be scrambled and some other checksums can be calculated. e.g. the sum of some of the letters + the previous checksum. There is also other possibilities to use ORA / EOR to mess the password even more. So ultimately the final password can be something like SCHI FAYB and having 26 alphabets the probability to guess the right password by luck is quite impossible. (there is 208 827 064 576 possible combinations)

When decrypting the password everything is done in reverse by calculating the checksums and combining bits back to their original places.

What do you think? I think passwords are much more retro than flash saving :)
 
Top Bottom