Milona Games/Milona Software: "Project Scarlet" development

This is where we discuss the development of Project Scarlet (Milona).

But how will we make it then? Obviously, I’m the writer, the artist and the game designer, it seems like.

Are you trying to ask for some help with your game project?
Are you looking for someone to team up with?
(And who is ‘we’?)

To be honest… yes…

1 Like

Ordinarily I’d consider offering some help,
but I’m already involved in another project at the moment,
(on top of my own personal projects,)
so I can’t take on another project.

I can however answer any C++-related questions and most Arduboy related questions,
an offer that I extend to every forum user.

I’ve moved your topic to the ‘Help Wanted’ section to indicate that you are hoping to find some people to work with.

It might help if you mention what skills you currently have and what skills you lack.
In particular, how much experience you have with programming, art and sound would be useful.
(I assume from your earlier post that you have some degree of musical ability?)

1 Like

Yes, you heard me correct with the music. I do have musical ability.

1 Like

Ok, that’s a start.

What programming and/or pixel art experience do you have (if any)?
Which specific aspects of making a game do you need help with?

I do have pixel art experience.
Well, the I could not the player animation to work properly, though all of the frames are a multiple of eight high (standing still, running, sliding down a pole). When I tried to place multiple boxes.
I tried making 4 of the same group of variables for each box and add physics for the respective boxes (it’s not a perfect method, by any means).
The jumping arc is definitely a big thing. I haven’t actually implemented that one, but for the player to not be irritated the arc would need to be smooth. The protagonist would make use or poles and elevators because they take fall damage (Donkey Kong physics).

I made the player be able to land on platforms by moving their Y position a pixel up, so that they don’t fall through it. But this messes with the animation.
And I used delay(100); to keep the game from going too fast.

I would advise against using delay() and instead set the frame rate appropriately.

2 Likes

But what about music? Does music rely on frame rate?
And setting the frame rate wouldn’t help anyway.

Music does not rely on frame rate.

Why wouldn’t it help anyway? That’s exactly what the frame rate does.

Do you have this at the top of your loop()?

	if(!arduboy.nextFrame())
		return;

Because the movement of the sprites would be too fast, plus the framerate is needed to create the “third color” effect for certain backgrounds.
Third color as in rapidly moving dithering, as it’s the only way to do that on the Arduboy.

OK … if you cannot slow the frame rate down due to the color, can I suggest that you do movements every second, third or even fourth frame. Putting a fixed length delay in the code makes it much harder to keep the game play consistent.

Try:

if (arduboy.frameCount % 4 == 0) {
    movePlayer();
}

Or just use the Arduboy2 library everyXFrames() function.

1 Like

It didn’t occur to me before, but which of my questions were you answering ‘yes’ to?


I don’t know what you mean by ‘place boxes’.
What does the code look like?

As others have said, delay isn’t a good option.
The problem with delay is that it effectively stalls the entire game.

If you wrote delay(2000) then the whole game would be delayed for 2 seconds - none of your button presses would register for those 2 seconds, nothing would be drawn or updated.
It’s almost like freezing time.

(Though as @filmote points out, music would still work because it runs on a slightly different system.)

Personally I find that trick doesn’t work very well.
Have you actually managed to get it working?

(Also how it appears on the emulator may not reflect how it appears on hardware because the screen types are different.)

The dithering trick is about how the eye perceives it when it’s in motion.

Yes, I know how it’s supposed to work, but I find that it doesn’t work very well in practice.
(It’s an example of the “afterimage” (українська) effect, not “ditheringукраїнська.)

I’ve heard people discuss it, but I’ve never seen an example that works well,
and even if it does work, it’s likely to make a game much harder to write.

The only way I can think to do it accurately is to have sprites frames of different colours that are alternated every game frame.
E.g. something like:

if(drawBlack)
	Sprites::drawOverwrite(x, y, blackImage, frame);
else // draw white
	Sprites::drawOverwrite(x, y, whiteImage, frame);

drawBlack = !drawBlack;

But the pattern I use is dithering. I draw a checkered dithering filter in the background, then I draw everything that will make use of it on top (works best for a background or an illustration within the game). You also have to take still screenshot into account, since the effect will not be present at all if it just flashes.
FootDipDitherDemo.hex

1 Like

It does look greyish, but I can’t really tell how much of that is from the dithering and how much is from the afterimage effect.

ArduboyCapture2

The real problem is that the areas trying to use the ‘afterimage effect’ are very jittery,
and that jitter is very districting,
so it ends up distracting from the nice artwork, which is a shame.