I’ve barely had time to do that much more; but with the new habits which I’ve gotten from Atomic Habits, have most definitely helped.

With that being said, I’m starting with the next step, which happens to be the bombs mechanics. As you can see in the gif above, I’ve gotten the movement as slick as possible. I feel I needed to spend more time on the floor sprites, mostly to make the ice more wholesome, but using small focuses it’s easier to decide what will be done with the mechanics for the base remake, first.
1. Flipped Horizontally
As would be noted from the original SokoBomber – back then I didn’t understand Unity as much as was needed back then. I couldn’t get the left/right animation to work nicely – it happened to spend a second rotating the character around the Z-axis in the old game. I don’t know how long I spent on that, but it wasn’t nice. In FNA it uses a similar XNA mechanic for sprite rendering which helped.
public void DrawFlipped(Texture2D tex, Rectangle dest, Color color)
{
Engine.SpriteBatch.Draw(tex, dest, null, color, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0);
}
I know I might, in the future, need different flips, like vertical. But it makes it simpler for an easier time to go from concept to playable prototype.
case CharState.WalkRight:
switch ((swap_gameTick) % 12)
{
case 0:
case 1:
C.DrawFlipped(t_m_Character[(int)SBTile_SubChar.Left1], CharPos_Render);
break;
//...
}
break;
case CharState.WalkLeft:
switch ((swap_gameTick) % 12)
{
case 0:
case 1:
C.Draw(t_m_Character[(int)SBTile_SubChar.Left1], CharPos_Render);
break;
//...
}
break;
Just to share how the structure is simple, the spritesheet for SokoBomber‘s character movement has idle, up, down, dead, and to the left. In a simple manner, it’s easy to use the left character animation to move the character to the right.
That being said, since SokoBomber is an older game, I’m geared towards making sure it sticks close to the clean nostalgia. As much as possible, and as such, it means I kept the animation very rudimentary for old game. Note the ((swap_gameTick) % 12)
// in Class
private int swap_gameTick { get; set; } = 0;
// at end of Update
swap_gameTime_tick += Engine.GameTime.ElapsedGameTime.TotalMilliseconds;
if (swap_gameTime_tick > 100)
{
swap_gameTime_tick -= 100;
swap_gameTick = swap_gameTick < 100 ? swap_gameTick + 1 : 0;
}
// in Draw
switch ((swap_gameTick) % 16)
I believe it’s simple enough to understand, at least. Every Update it checks the milliseconds that have gone past since last update, when it’s over 100 milliseconds it increases the swap_gameTick. It checks if that is greater than 99, to start from 0 again, or increases up to 100. Each animated draw uses a small operation, which hasn’t had a considerable impact on the FPS, to snimate certain sprite.
Note in the gif above, the ignition tile flames, and the character’s movements. I need to test this more in the future when I start the new game upgrading this nostalgia, but it’s a problem for a day in the future at this point.
Other Thoughts
While progress is slow, it’s most definitely because I’m taking as much time as is needed to bring back the fabulous view of the old game. It at least has progress that can be regularly shown. I was hoping to finish the explosions, but I didn’t make enough progress, so only a single thing to share for today.
With that being said, I think I need to dabble in the shaders finally. Make a lighting shader where it fades out from the character, and I can organise the explosion shaders and animations together. Since my last work with shaders wasn’t in FNA I’m extremely rusty and my old shaders need some loving rewriting, but soon it will work it’s way back into my noggin.