HPEngineCubedView the code on GitHub!
Sprites from Scott Pilgrim VS the World but setup in this window by me!This is an engine/framework made with
SFML to create 3 specific games (and hopefully more!) by me;
Hussain Patel!The end result is to be able to create a side scrolling 2D fighting game (similar to Scott Pilgrim VS the World or Castle Crashers).
Although that'll take forever, so during the development as core features are being added I'll try to make a game with the few features it has.
Not only will this keep itching my need for designing and pushing out games, but it will also run my engine through a cycle of developing a game allowing me to identify issues in a low cost environment.
The first game planned is a
Point and Click / Text based adventure game, some of the features include (but are not limited to):
Properly anchored UI elements to allow for support on multiple screen sizes [Donezo!]A semi-stack like Screen system to efficiently change screens with transitions [Donezo!] (and have overlays within screens!) [Donezo!]Animations handled via both spritesheets and programmable movements (sin movement, shake movement etc.)[Donezo!]- UIElements working:
UIImage, UIButton, UIButtonList, UIText (names subject to change) - Basic audio manipulation... Having BG music and SFX implemented without memory leaks (using smart pointers probably!)
The second game is a 2D fighting game (similar to Tekken or Street Fighter).
And last (but not least!) is a 2D sidescrolling fighting game, as explained above!
Here
I'll post about features added to the engine, until it has enough to develop Game 1! Then I'll post updates regarding the development of that game.
You can see more of my work on
my portfolio, I recommend checking out
Hold On! as it's my most completed game to date and of course a ton of fun!
Thanks for reading!
Below are my current features, I'll make separate posts when features are complete. For more
hopefully consistent but incomplete updates you can watch me on
GitHub!
If you want to see what I'm working on in an agile style then check out my
Taiga backlog and have a peek at my latest Sprint contents.
(If someone knows how to tag spoilers please let me know, images are cool but they take up a lot of space! Kind of like this text asking if there are spoiler tags and what they are and how to add them...)
UIElements can be anchored to the screen and their origin point, demonstrated with a working UIImage
UIImage logo = UIImage("logo_shadow", m_Window, UIPosition());
UIImage logoLeft = UIImage("logo_shadow", m_Window, UIPosition(UIAnchor::LEFT));
UIImage logoTopRight = UIImage("logo_shadow", m_Window, UIPosition(UIAnchor::RIGHT | UIAnchor::TOP));
UIImage logoBotLeftCentre = UIImage("logo_shadow", m_Window, UIPosition(UIAnchor::BOT | UIAnchor::RIGHT, UIAnchor::CENTRE));
// UIImage (Texture Name, Reference to Window, UIPosition(Screen Anchor enum(s), Origin Anchor enum(s), X Offset, Y Offset));
Animations are based on spritesheets and programmed movements
UIImage scottLeft = UIImage("newSpriteSheet", m_Window, UIPosition(UIAnchor::LEFT, 400.f));
scottLeft.setTextureAnimationSpeed(8);
UIImage scott = UIImage("newSpriteSheet", m_Window, UIPosition());
scott.setTextureAnimationSpeed(8);
scott.setTextureAnimation("Run");
UIImage scottRight = UIImage("newSpriteSheet", m_Window, UIPosition(UIAnchor::RIGHT, -400.f));
scottRight.setTextureAnimationSpeed(8);
scottRight.setTextureAnimation("Run");
scottRight.chooseProgrammedAnimation().setSinMovement(SinMovement(0.f, 0.f, 30.f, 1.f));
scottRight.chooseProgrammedAnimation().setShakeMovement(ShakeMovement(10, 8.f));
Could probably do with changing how you call the programmable animations, not sure why I've done it like that :S Also totally not my sprites or animations! They've been taken from Scott Pilgrim VS The World, seemed right to test it with a 2D sidescrolling beat-em-up.Transitions between screens, wait that also means a stack based screen system!
// In MainMenuScreen:
SceneManager::getInstance().pushScreen(new OptionsScreen(m_Window), FadeColour());
// In OptionsScreen:
SceneManager::getInstance().popScreen(FadeColour());