Not the breakout clone but I've got animated sprites to work in SFML.

Also, I forgot that I have the hashtag featured in my profile and I haven't used it, so here you go.

I've added projectiles that the player can shoot. I was originally just going to make a simple maze game but I got carried away after getting a hand with SFML.

Follow

I've added exit tiles. It just ends the game because I don't have it programmed to have multiple levels yet.

· · Web · 1 · 1 · 2

So it turns out that I can't have multiple levels without major reconstruction of the code. C# spoiled me with it's lack of import/include statements and Python was dynamically typed which meant I didn't have to declare the object type right away, so now I have to deal with avoiding recursive includes.

Ugh!

Got a second level. I learned that if you just include a blank class definition of a dependency in the header file and then include the actual header of the dependency in the source file, then you can avoid recursive includes.

gamedev 

Now there are three levels, all of which are derivatives of each other.

gamedev 

Got a camera to work. It's manual but if I plan to actually finish this game, I would probably have it scroll based on the player's position and movement. You can also see that there are tiles outside of the camera bounds. Those were left in by mistake.

SFML has a built in camera called sf::View. It's pretty weird. I'm used to having a 2D camera origin being at the top-left corner just like sprites, but the origin is actually in the center which is something I need to get used to.

I mean, it's kind of justified because it also has support for rotation and zooming (things I have never used). I'm just used to implementing my own camera system and just drawing sprites based off of their positions and the camera offsets, but that not an option here because sprites are automatically drawn based on their position (no manually drawing here).

gamedev 

>sprites are automatically drawn based on their position (no manually drawing here).

Probably should clarify that. Sprites are manually drawn by calling the sf::RenderWindow.draw() method. It's just that sprites automatically have a set position and you can only draw based on that.

gamedev 

Now the camera vertically scrolls with the player's movement. Horizontal camera movement hasn't been implemented yet.

gamedev 

Horizontal scrolling with player movement has now been implemented.

gamedev 

Created my first enemy. All it does is move down. It's hard-coded into the level (it's not in the level file). The octorok sprite is just a placeholder (if I even plan on releasing this).

gamedev 

The enemy now has random movement, but no collision detection.

gamedev 

You can now kill the enemy. Deleting the object is so much different than what I'm used to. In C#, I could remove the object from its respective list within one of its method because it would be garbage collected. In C++ I have to delete the object outside of the object itself.

gamedev 

The player now knocks back when colliding with the enemy. And I've encountered a bug during this recording.

gamedev 

Player can now take damage. Game Over screen is just a white screen right now.

Oh yeah, I've also fixed the bug, but I didn't feature that in this recording.

gamedev 

Enemy now has a death "animation" (single frame).

gamedev 

I tried to test out increasing the health of the enemy, but I'm stuck with this annoying bug where the enemy dies in one hit no matter how much health I give him. I even tried giving him 1000000 hp and the result is still the same.

gamedev 

I've fixed the bug, but now the enemy is left on the death animation if it dies. As you can see, the enemy is knocked back based on the direction it is facing, when it should be based on the velocity of the projectile (result of copying and pasting code from player's knockback).

There is also a new problem in that I keep on getting segmentation faults. I don't know where they are coming from.

gamedev 

Fixed the segmentation fault and the death bug. Segmentation fault happened because there was an index that I forgot to set to 0. I'm used to C# where integers had the default value of 0 when declared as opposed to random values as it is in C++.

gamedev 

I've added keys, which can be used to open lockdowns that haven't been implemented yet.

gamedev 

I've added locked doors. Probably should create a better tile for them, but all tiles are placeholders (assuming I publish this game; this is merely me just getting used to object management in C++) as most sprites are from Zelda I and BS Zelda.

gamedev 

I've added a heart that increments HP by one.

Show newer

gamedev 

@xianc78 let a little bit of his head off the hitbox (separate sprite dimensions from hitbox dimensions in code) and it makes it 3d esque

gamedev 

@ne Changed that just now. Thanks for the tip. This kind of stuff was much easier in MonoGame because C# had built in getters and setters. C++ on the other hand, makes it a bit more cumbersome.

gamedev 

@ne I also shaved off some pixels from the hitbox horizontally. I've noticed that Link's Awakening has smaller hitboxes than the sprites. It makes it much easier to fit the characters in 1 tile long corridors.

re: gamedev 

@xianc78 is the bullet colliding with the enemy multiple times? (causing damage being reapplied per frame)

re: gamedev 

@Binkle I've made it so that the bullet is deleted after the collision. I've also made it so that the enemy would be in a knocked back state on collision if they still have hp and the enemy can't take anymore damage while still in the knocked back state.

I honestly don't know what's wrong.

Sign in to participate in the conversation
Game Liberty Mastodon

Mainly gaming/nerd instance for people who value free speech. Everyone is welcome.