Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Zeran's Folly  (Read 57762 times)

0 Members and 1 Guest are viewing this topic.

myroidtc

  • Newbie
  • *
  • Posts: 39
    • View Profile
    • Myroid-Type Comics
    • Email
Zeran's Folly
« on: June 23, 2014, 04:47:52 am »
Zeran's Folly is a story-based action-adventure platformer with fluid combat and a weird sense of humor.

The game is being built in C++ and uses a custom engine. Except for networking, I use all of the SFML modules: graphics, window, system, and audio. I enjoy SFML because, well, it's simple and fast but also includes a bunch of useful little features.

I came to SFML from Flash back in 2013. At first I missed some of the basic engine stuff from Flash like rendering and asset management but I've grown to love the power and flexibility that SFML offers. One of my favorite parts is shaders--you can get some awesome effects out of them if you get creative. For example, I use shaders for the wavy water effects, some bloom here and there, and as a method to tint the level art in some sections of the game, mostly in the Manastery area. You can check out the effect in the "Miracle Juno Boss Fight" video below.

Zeran's Folly is out! Check it: http://store.steampowered.com/app/665030/Zerans_Folly/


http://www.youtube.com/watch?v=Af1wwCLzcLc

Some pretty pictures:







Here's a bunch of videos:

The first few minutes:
http://www.youtube.com/watch?v=RpdMlh5QIZE

Lone Clone boss fight:
http://www.youtube.com/watch?v=91jrjgKLSO4

Final dungeon gameplay:
http://www.youtube.com/watch?v=T0mVBkF6GqY

Miracle Juno boss fight:
http://www.youtube.com/watch?v=lrg4i2xZSbk

Let me know what you think!

IndieDB: Zeran's Folly
Twitter: @myroidtc
Subreddit: /r/ZeransFolly
« Last Edit: October 12, 2017, 01:36:25 am by myroidtc »

Jesper Juhl

  • Hero Member
  • *****
  • Posts: 1405
    • View Profile
    • Email
Re: Zeran's Folly
« Reply #1 on: June 23, 2014, 05:42:42 am »
Wow. Although this is not really my kind of game, it looks really well done and the video is amazing.
Love the graphics.
Great work.

dwarfman78

  • Full Member
  • ***
  • Posts: 228
  • I'm bietzsche, Nietzsche !
    • MSN Messenger - cd4c@hotmail.com
    • View Profile
    • Email
Re: Zeran's Folly
« Reply #2 on: June 23, 2014, 07:20:16 am »
This is sweet, it reminds me of Sonic The hedgehog in a way.
@dwarfman78
github.com/dwarfman78

Geheim

  • Full Member
  • ***
  • Posts: 201
    • View Profile
    • Email
Re: Zeran's Folly
« Reply #3 on: June 23, 2014, 06:19:30 pm »
This is by far the most complete project I've seen so far and it looks awesome!
Seems like a lot of fun to play and I definitely would love to play this!

You and your team did a very great job on this one and the graphics really look great.
The only annoying thing is the sound of the coins :D
Keep us updated on this masterpiece! ;)
Failing to succeed does not mean failing to progress!

myroidtc

  • Newbie
  • *
  • Posts: 39
    • View Profile
    • Myroid-Type Comics
    • Email
Re: Zeran's Folly
« Reply #4 on: June 23, 2014, 07:25:48 pm »
Wow. Although this is not really my kind of game, it looks really well done and the video is amazing.

Thanks!

For those of you who are on the fence, the gameplay shown in the video is from a sidequest that is more of the traditional "collect coins and beat the stage" deal. The main game is more Zelda-y in that you go to a place, beat a dungeon, maybe get a new power, go to the next place, and so on. Millie Megavolte 6, another game I made, was like this.

This is sweet, it reminds me of Sonic The hedgehog in a way.

Yeah, Sonic is one of my biggest influences. In fact, the physics engine is an implementation of the Sonic engine from the Genesis games. Check out Sonic Retro, they did a really good job explaining the Sonic physics engine.

Originally I just wanted a way for characters to go up slopes at the correct speed but I guess I went a little nuts with it, heh.

You and your team did a very great job on this one and the graphics really look great.
The only annoying thing is the sound of the coins :D
Keep us updated on this masterpiece! ;)

Thank you! Tori Kamal and Izzy Dulay did a great job with the voices. Everything else on screen (except a good chunk of the sound effects) is my handiwork, from the art to the programming to the music. I guess I can't brag about the coin pickup sound being any good though, heh.

Clockwork

  • Newbie
  • *
  • Posts: 47
    • View Profile
Re: Zeran's Folly
« Reply #5 on: June 23, 2014, 08:29:08 pm »
Wow!  That looks like it could be a great app (I would absolutely download it if it was).

Oh, and if you don't mind me asking, what did you use to make the maps?  Was it TiledMapEditor or your own level editor?

myroidtc

  • Newbie
  • *
  • Posts: 39
    • View Profile
    • Myroid-Type Comics
    • Email
Re: Zeran's Folly
« Reply #6 on: June 23, 2014, 08:45:57 pm »
Oh, and if you don't mind me asking, what did you use to make the maps?  Was it TiledMapEditor or your own level editor?

The foreground is split into three layers: midground (behind the character), foreground, and collision mask. All three are big ol' textures, which is why the levels are broken up into sections rather than continuous. While incredibly easy to work with (just draw some stuff in an image editor and boom, level), it's incredibly taxing on memory and load times. If I keep going with this method I'll have to rework it in some ways because I've noticed lower-end machines have problems with missing textures.

I do most of my "level editing" with Flash. I use it to make the collision masks and I made a script to output object positioning code that I can insert directly into the C++ source.
« Last Edit: June 23, 2014, 08:48:06 pm by myroidtc »

zmertens

  • Jr. Member
  • **
  • Posts: 80
    • View Profile
Re: Zeran's Folly
« Reply #7 on: June 24, 2014, 07:09:28 am »
That looks awesome. I definitely got a Sonic vibe from it too. It should be on Steam!
The truth will set you free but first it will piss you off.

BaneTrapper

  • Full Member
  • ***
  • Posts: 213
  • Do you even see this, i dont need it.
    • View Profile
    • Email
Re: Zeran's Folly
« Reply #8 on: June 25, 2014, 02:35:25 pm »
I think i would enjoy thins quite. Nice smooth game play!
BaneTrapperDev@hotmail.com Programing, Coding
Projects: Not in development(unfinished/playable):
http://en.sfml-dev.org/forums/index.php?topic=11073.msg76266#msg76266
UP and in Development: The Wanderer - Lost in time
http://en.sfml-dev.org/forums/index.php?topic=14563.0

Mario

  • SFML Team
  • Hero Member
  • *****
  • Posts: 879
    • View Profile
Re: Zeran's Folly
« Reply #9 on: June 26, 2014, 06:34:00 pm »
I like it so far, but I've got two things that I'm not that happy with:

  • Plenty of health: Maybe I'm a bit too old-school for this, but the amount of health appears to be a bit extreme.
  • Lack of contrast: Looking at the levels shown, it's either all green, all blue, or all brown. Especially at high speeds it appears to become a blurry mess. I think the game has been heavily influenced by the classic Sonic games (especially those loopings), so I'd say look back at the Sonic games: There's always quite some high contrast, e.g. blue sky, brown background, and green platforms (and a blue character).

myroidtc

  • Newbie
  • *
  • Posts: 39
    • View Profile
    • Myroid-Type Comics
    • Email
Re: Zeran's Folly
« Reply #10 on: June 27, 2014, 04:25:42 am »
Plenty of health: Maybe I'm a bit too old-school for this, but the amount of health appears to be a bit extreme.

Like, as in appearance-wise, or difficulty-wise? According to the feedback, there was a wide spectrum of perceived difficulty but it tended to skew towards fairly difficult. Plus, keep in mind that I know the game inside and out (obviously) so I didn't need that much health in the video.

But, rest assured it won't seem like much on the higher difficulties. (Mostly more damage taken, most enemies and bosses have extra/harsher abilities, etc)

Lack of contrast: Looking at the levels shown, it's either all green, all blue, or all brown. Especially at high speeds it appears to become a blurry mess. I think the game has been heavily influenced by the classic Sonic games (especially those loopings), so I'd say look back at the Sonic games: There's always quite some high contrast, e.g. blue sky, brown background, and green platforms (and a blue character).

That's a good tip! I'll keep it in mind.

cm3rt

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Zeran's Folly
« Reply #11 on: June 27, 2014, 09:38:46 am »
Very cool. You did an excellent job. I really enjoy the familiar feel to Sonic the Hedgehog. One question I have regarding the engine: do you have any tips or tutorials on actually making the game side scrolling? Meaning, how do you stream the map from left to right? Obviously this is a fundamental question of side scrolling games and I don't expect a thorough explanation, but I really would like more information on how this is done.

myroidtc

  • Newbie
  • *
  • Posts: 39
    • View Profile
    • Myroid-Type Comics
    • Email
Re: Zeran's Folly
« Reply #12 on: June 27, 2014, 10:47:42 am »
how do you stream the map from left to right?

Think of it as having two representations of your game world: logical, and on-screen. A character may have an X position of 1500 but it may have an on-screen position of 300 depending on where the camera is.

object.onScreenPosition = object.absolutePosition + camera.offset;

So, in your draw function, you position the sprites on-screen depending on their distance from the camera rather than on their absolute position. By moving the camera or having it "track" an object, you can move the object around and the world will appear to follow them, scrolling the map.

cm3rt

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Zeran's Folly
« Reply #13 on: July 03, 2014, 08:08:46 pm »
Ah that makes perfect sense. Thank you so much.

So one last question that goes along with that, I think:

If the world in which you're scrolling through with relative positioning of objects, do you load the resources of the objects when they are, say, 1000 > x > -1000 AND 1000 > y > -1000 position units away from the main character (the center of the screen), and anything outside of those bounds unload it?

Also, do you have the absolute positions of every object stored inside some sort of database so that you know which objects to load the resources of and display as you get close to that object?

Thanks so much again,

cm3rt

myroidtc

  • Newbie
  • *
  • Posts: 39
    • View Profile
    • Myroid-Type Comics
    • Email
Re: Zeran's Folly
« Reply #14 on: July 03, 2014, 10:03:32 pm »
Quote
Also, do you have the absolute positions of every object stored inside some sort of database so that you know which objects to load the resources of and display as you get close to that object?

Movable objects in the game (like coins, the characters, particles, etc.) derive from a Mobile class. Mobiles have an sf::Sprite member that gets drawn when draw() is called on the Mobile. Mobiles also contain other data like its absolute position, animation data, velocity data, and so on. If the Mobile is going to be used that level, such as the bee enemies in the grasslands level, its textures will be loaded or pointed to.

That will help explain the next part:

If the world in which you're scrolling through with relative positioning of objects, do you load the resources of the objects when they are, say, 1000 > x > -1000 AND 1000 > y > -1000 position units away from the main character (the center of the screen), and anything outside of those bounds unload it?

The issue here is not loading/unloading resources, which is a different beast altogether. Instead, it's about calling draw() on an object or not (i.e. culling). The way it works in Zeran's Folly is fairly simple:

-Set the sf::Sprite's position to the Mobile's absolute position modified by the camera offset. This will be its "screen" position.
-Is the sf::Sprite's getGlobalBounds() inside the screen, therefore (probably) visible? If so, call draw() on it. If not, don't.

TL;DR: Don't mess with loading/unloading textures, just don't call draw() on stuff that won't be seen. sf::Sprites are contained in another class that has absolute position data--no database is used.
« Last Edit: July 03, 2014, 10:05:41 pm by myroidtc »