Hey guys,
This is a question about design. I am in the process of making an action RPG/Platformer (think Hyper Light Drifter + Alundra). Is this even an attractive genre to venture into?
Reason I ask is, the platforming alone is quite challenging. I mean, I have gotten the jump mechanic and jumping on objects down, but every time I open/close Unity, I find a new bug I have to fix, and these bugs have to do with the 2D Colliders, than the code. How realistic is it to create such a platformer title?
I wanted the jump mechanic - primarily for platforming - but I don’t want to lose the focus on the action bit. So I was thinking of disabling the “platforming” when combat started and allow for some jump attacks during combat phases. Is it necessary? I know most RPG’s would handle this with just going around objects, or add slides/slopes to go up altitudes. I haven’t even started on the enemies - I know I will encounter many bugs - but is it worth the effort? Let me know if this is a popular mechanic to have or potentially popular? Thank you.
Any game worthwhile to create will have you spending long amounts of time on bug fixing.
Are your concerns the challenge of creating the game due to bugs or whether it will be fun? I’m not familiar with Hyper Light Drifter or Alundra unfortunately.
Interestingly enough, there’s a fairly recent thread on this here .
Both actually. I cannot find ANY 2D Action RPG out there that has the active jump mechanic besides Alundra, and its prequels. Every other Action RPG (even the one on Cross Code) isn’t really the type of jump mechanic I envision.
I worked a lot on this for the past 2 and a half months. I have the ability to jump on platforms (At least 1 level up for now) and fall off those platforms [ 1 level down ]. It can also jump from one platform to another (Although there is a tiny glitch when jumping upwards)
I asked that question because I know there’s going to be so many glitches and bugs, but I find myself thinking about this all day every day when I’m stuck on a bug and then I proceed to somehow fixing it. Is this a normal process? That’s why I asked whether it’s worth adding this jump mechanic? I would love it. But I read many people complaining about Alundra’s jumps because they couldn’t tell height differences and the “too precise” jumps. I learned from their mistakes and made the jump a lot more controllable like Mario’s.
My intent is to have a story rich action platforming RPG because I really enjoy exploration by jumping on things, and I really enjoy a good combat system - only makes sense to combine them. I can also just take feedback to see if people would like to see this in a game so I can get motivated to do this.
Funnily enough, I read that post before posting mine (which is why I posted in the first place, nobody asked what I had in mind). Unfortunately he/she is asking if jumping is relevant in 3D games in general. For example Dark souls doesn’t have any jumping. Only falling. Many 3D games these days don’t have jumps so they were curious about that on the 3D spectrum. But I really really love 2D looks on my games so I didn’t know if this was still a popular thing today.
I can’t speak for other people but for me, that’s fairly regular. A nasty bug that I can’t fix for over a day tends to make me think that it’s unsolvable until I solve it lol.
This is true.
I feel that the jumping that you describe could be accomplished and bug-free given enough time. I guess it also depends on how long your willing to work on this game for before release. I don’t think that it’d be too time-consuming but I’m not very good at estimating coding time. If you were to add jumping, would you plan on making a 3D world with an orthographic camera to make it seem 2D? Or a different method?
Perhaps the right way to go about this from the game design perspective is to identify any other problems with Alundra’s jumping and find solutions. In the end, if you figure that you can fix any major problems you have (and preferably minor ones too) then it may be perfectly fine to add the jumping.
I am not using 3D at all. I am simulating the jumping with the Y Axis as a simulated Z Axis. I think that’s what Alundra did… I have been playing it to observe the jump, you can literally see the physical colliders in that game when Alundra is around the edges of the sprites he can jump on.
What makes this very interesting to work on is the illusion of 3D with pure 2D. And it works so far!
It would enhance the illusion if you made a fake shadow- just a dark rectangle that’s always directly underneath the player. The shadow would stay on the ground when the player is in the air, though.
The shadow is already there! Look closely. It shows up briefly when the player is up in the air.
In fact, without the shadow, jumping would be impossible since all my collision detection required for the jump and fall mechanic lie within the shadow object.
Just like in real life when you think about it, without our shadows, there’s no way we could tell where the ground surface is at and we would lose perception of height, so that’s what made me realize this.
At this moment, the shadow and player objects are different gameObjects, but both are in sync by sharing one script, so one has knowledge of the other.
Make sure that a jumping animation exists because the first jump sort of made it look like you were just walking onto the platform. I know that this is clearly just a test and the graphics aren’t there yet. But when you get to graphics/animations don’t forget that.
I notice that you have a little 1 x 1 spot on the lower level surrounded by high-level spots. Make sure that if a player falls into one of those holes, they don’t lose their character.
Edit: About point 2, I seemed to have misunderstood what was going on. There’s a confusing bit about the graphics here:
It seems that you can jump to move along the blue line yet you can walk to get to the same place by walking along the black curve?
Very good observation. The jump trigger in the upwards direction is a bit janky at the moment. The shadow object basically has 4 colliders to detect for jumpable tiles, and fall tiles, and when I am jumping up, the fall detection sometimes goes off for the upwards fall and it gets weird - so I make him jump up by moving the shadow slightly (0.7) points greater than 1 tile up, so that it is away from the fall tile and the upward fall collider doesn’t hit. I have yet to completely get rid of all the bugs involved with the collision detection.
Another good observation. This is the exact reason why Alundra had complaints from people.
Some platforms would be difficult to guage on the jumping on this game.
One thing I could think of is to add some kind of a design around the tiles that are at the edges. Like tiles that fall if the player moves up, would have some kind of ledge design on its upper portion of that tile. Would that make sense you think?
This is a bold lie, git gud my friend! You jump in DS1 by holding the dodge button to run and during run you press it again. There are several places that can only be reached by jumping. DS2 and DS3 have jumping too, but iirc at least one of them has the buttons for it slightly different (thumb stick press instead of B button).
If most don’t have a feature, more often than not this has a good reason. I learned that lesson the hard way on other things. Don’t fool yourself into thinking you’re innovating just because no one else is doing something. For all we know half of them tried it at one point and scrapped the feature for good reasons.
Have you played Crusader: No Regret? It has jumping, but in a “grid aligned” way, and I think with isometric tile-based 2D games that is the way to go. Make the jump a clear choice for getting from tile x to tile y, not touching the z number of tiles between them. That’s unambiguous and can be easily learned by players. For evading incoming attacks you can add a separate dodge function with invincibility-frames.
Regarding Dark Souls, the jump mechanic isn’t a platformer jump mechanic - think ratchet and clank/rayman/mario - but more of an attempt at an awful jump mechanic to have an attempt at realism (for whatever reason - but DRAGONS and dead people shooting arrows are so real.) The jump in Dark Souls is clunky at best by only allowing a user to jump when sprinting. That is not a jump mechanic - that is an awful control scheme. It didn’t work with Tomb Raider - it ain’t working here either.
Just because nobody else has tried it does NOT mean it’s for good reason. It’s probably just challenging - and if you’re the type of dude who gives up on a challenge, well, you do you. If this is the case - how come Nintendo came up with Mario & Luigi Superstar Saga ? Which is exactly what I am looking for with a more actiony feel than a Mario feel.
Before Mario - no platformer allowed for a controlled and precise jump mechanic. After Mario - many games copied its style and made a lot of platformers revolving around the jump mechanic. Then Megaman came - that introduced a more action-platformer feel by including levels and enemies built in a way so that Megaman would have to jump to shoot/dodge.
Update: I saw the game you mentioned. Reminds me of how Golden Sun implemented a jump. Not what I’m looking for. I want an active jump button for exploration’s sake. During battle this button can be used for jump attacks - versus exploration, unless it’s perhaps for a dodge.
Don’t you think it would be fun to jump around a landscape to see what you can find? Puzzles/exploration/battle sequences with the jump (like an attack that can only activate when jumping during battle mode) etc. ?
Mario RPG (SNES) was an isometric tile-based game with an active jump key. But so is Superstar Saga - which is not isometric based. And it was a super hit. So was Alundra in Japan. If people oughtta “git gud” for a dumb jump mechanic like Dark Souls - I don’t see a convincing reason not to have a jump mechanic for a 3/4 Perspective video game.
Perhaps the challenge isn’t from a code perspective - but more of a graphic perspective which is probably why people don’t attempt it. It takes a lot more thinking than just a loop to get this working.
I personally really enjoy the platforming on Alundra. It blew my mind when I first also played Superstar Saga. 3/4 Perspective jumping can be really fun if done right.
On a side note: Did you not take a look at the gif I got in my later posts? What did you think?
There certainly are plenty of legitimite criticisms to be raised about the implementation of jumping in DS, but your exact words were “Dark souls doesn’t have any jumping. Only falling.” and that just isn’t correct, even if I was up for arguing semantics, which I’m not.
Not necessarily, but it’s not a far fetched conclusion either. If it’s important to you and you don’t see a strong enough reason not to do it based on the games that have tried it, then go for it!
Fair enough, I can understand that.
What I think or like is pretty irrelevant in the grand scheme of things. For example I thought the first person plattforming in Mirrors Edge worked perfectly fine and was a very nice innovation that made me play through that game 2 or 3 times in total. But on the other hand the one reviewer who’s opinion I care about said something along the lines of “It’s great that they took a risk and tried something new, but now we know that first person plattforming just doesn’t work and the game should have been third person”. I 100% disagree with that because I’m convinced his opinion only comes from the fact that he is bad at first person plattforming. I’m not. But what good does that do me if I base my design choices around that and most people turn out to be bad at this too? I’m not sure how the general public felt about that game/mechanic. Probably not too bad since a couple other games implemented first person parcours mechanics to some degree.
I tend to agree, you’ll have to spend a lot of time on carefully designing the visual clues that remove any ambiguity from what you see on the screen. Alundra seems to do that pretty well for the most part, but I believe it could be further improved.
I think there are a couple of issus. Watching it for a while in fullscreen makes me nauseous from the camera movement. I think the cam should overall spend less time moving. Also I think it isn’t doing “pixel perfect” movement and you see the thickness of the pixels of the background tiles flicker. I happened to stumble over this today: https://wolv.co/projects/pixel-perfect-retro-camera
But I didn’t test it, so your mileage may vary.
Then I think the camera should not move when you just jump up and down, it should stay focused on your shadow on the ground (apply fixed offset as necessary to keep the character well framed even during jumps).
I think the visual clues about your position that you get from your shadow could be improved. Try making it much more visible, and fade it out the further away from the ground tile you are. You could experiment with making it smaller the higher you are too. Not sure if that one is a good idea though.
As a start I would try to copy Alundra’s implementations faithfully and then see if/how you can improve it. Currently I have much less issues with motion sickness looking at fullscreen gameplay of Alundra, compared to your gif.
Also it seems like you can walk behind raised tiles and there’s walkable area that is entirely invisible. That’s potentially problematic if enemies can hide there. I would try to avoid these causing unnecessary frustration among players.
For the implementation you need to ask yourself a bunch of questions, like:
will you have slopes?
how precise do you need to calculate line of sight and/or projectiles?
how will you create and save the data for your levels?
how will you solve path finding for enemies?
will you ever need to have a walkable area under a “bridge”?
how easy would adding new features later be?
If I was implementing this I’d probably try making a 3D version of the scene with rigidbody colliders (no mesh renderers) where I can easily do raycasts or bounce physics objects around, and then just grab the positions of the objects and build the 2D sprite representation from that, aligned to the pixel grid. But I haven’t actually tried this yet, so there might be some pitfalls that I don’t know about.
I didn’t read the full thread, sorry if something has been mentioned before.
I loved Mirror’s Edge. It was a real classic actually because of how innovative and the whole game revolved around it with the main character being a parkour expert. So it made sense and worked well for that context. Not sure I’d take the opinion of someone that just says blanket statements like “first person platforming just doesn’t work”. I would want to know “Why? What about it did you not like? Was it the camera? Movement? Graphics?”
What you saw in that gif was just a basic prototype I got working. Graphics was the opposite (still is) of my focus because I had characters and surfaces before but it kept distracting me from making the movement as good as it can be.
The camera suggestion won’t work because if I were to put the camera on the shadow - what will I do when the character falls from tall ledges ? Or wants to jump from one platform to another? (Which can be done atm, I will be updating that gif with a bit more enhanced graphics - still using blocks)
However, the pixel perfect retro camera - I think I have read that before. I didn’t focus much on the camera yet - just the movement. Getting the guy to jump and fall off objects is no easy feat. Especially when you’re trying to automate this using a reusable component. So far I’ve got a reusable fall script/component colliders that works for the most part for multi-level falls. I need to do the same for jumps. Once the moving is as good as it can get - I will focus on the camera movement.
Personally the camera movement was not bothering me - but maybe I can alter that. I will look into the pixel perfect camera to fix the line flickering though. I did notice that - thanks for the recommendation. I didn’t know what was causing it but was gonna check that out later.
I think Alundra’s movement is horrible - I don’t like how he moves - there doesn’t seem to be any sort of feedback that he is moving and something about the jumps feel off to me. I really enjoyed Mario Superstar saga’s jump and movement though. But I am still envisioning a certain kind of movement. I play Alundra these days to observe how that shadow works. It is very interesting.
I have thought about this route - but working with 2D Sprites with 3D colliders turns out to be a real pain. Combat/platforming and generally working with 3D colliders for me personally is weird when all the sprites are just flat 2D colliders. It was a lot easier to program the 2D physics than having to rely on Unity’s 3D physics. I bet the 3D physics will work great if all your assets were 3D or most of your assets were 3D. But the kind of look and feel I am going for (which is a bit more action-like), 3D will probably work against me later on.
Like I said, I don’t agree with him either in this case. But if you keep following a single critic you get to know their taste and by now sometimes I’ll think “He hates it because of x,y and z - I bet it’s right up my alley”, or vice versa.
I would define the behaviour for all edgecases explicitely. E.g. left/right camera movement can always be derived from the shadow without problems if the shadow is just under the character. If the character is falling you can check if before losing contact with the ground the jump button was pressed. If not, move camera downwards straight away to see where you’re falling, if yes, maybe start a timer that would keep the height locked till either you touch ground again or you can deduce from the timer that the character is jumping down somewhere.
Entertaining video - almost every single comment on that video,however, is saying they loved Mirror’s edge. I don’t take youtube reviews very seriously when he uses inflammatory words every 10 seconds.
I see…If jumping, keep the camera fixed on the player, if not, focus on the shadow. When I’m developing this I tend to think from a real life perspective. If you were to fall, you’d immediately look down - or at least be very aware that you are falling down. If you were to jump, you’d try your best to keep focus on the direction you’re jumping onto. I believe Cave Story did some interesting mechanic with the camera. Interesting. Thanks for the suggestion.
Side note: regarding the pixel perfect camera - I believe there’s a package to install that resolves that problem. Hopefully this was what you were referring to.