Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

2D 3/4 Perspective Active Jump Platforming/Action RPG Adventure?

Discussion in 'Game Design' started by GazingUp, Aug 5, 2019.

  1. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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.
     
    jbb1979 likes this.
  2. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    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.

    Sorry if this wasn't much help :p
     
  3. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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.
     
  4. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    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.
     
  5. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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!

    https://gph.is/g/ZYAwKW1
     
    YBtheS likes this.
  6. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,612
    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.
     
    BrandyStarbrite likes this.
  7. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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.
     
    Last edited: Aug 8, 2019
  8. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,612
    Ok, I see it now.
     
  9. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    Ah okay. Well done!
     
  10. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    Is this still on the right track? Multi-level jump/fall. Is it obvious that there are two platforms above ground?

    https://gph.is/g/ZYxAzMn
     
  11. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    That looks very good. Two things to note:
    1) 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.
    2) 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?
     
    Last edited: Aug 15, 2019
  12. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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?
     
  13. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    Sounds good!
    Yah that's what I was thinking of actually. Try making a prototye like that and seeing if it works.
     
  14. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    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.
     
  15. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    Alternatively, most thought this way and never attempted it.
     
  16. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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?
     
    Last edited: Aug 19, 2019
    YBtheS and Martin_H like this.
  17. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    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.

    Good luck!
     
    GazingUp likes this.
  18. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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.
     
  19. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
    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.
     
  20. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    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.
     
    Martin_H likes this.
  21. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    So I am running into a kind of a problem situation here with how sorting sprites work. I have no clue how Nintendo and the dev team behind Alundra - working designs - figured this out... It's driving me insane.

    So with Unity's Tilemap - I am unable to figure out whether a tile that my shadow's trigger is colliding with is in a Y position greater than or less than the shadow's Y position.

    This is important because this allows me to determine whether to show my player's sprite above or below the platform above the tile the shadow is colliding with, while jumping.

    Would you know if there's some trick in Unity's tilemap (or any tilemap editor) where I can get the Y position of the tile below or above my collider?

    For example:
    If my player is moving downwards and there's a platform he can jump on, this platform is in sort order 4, the base of the platform base the shadow collides with is on sort order 2, and shadow is on sort order 1. The player is on sort order 3 so he appears below the platform. I have a collider above the player to determine whether to show him above or below said platform and so this works beautifully when dealing with a single level platform (ie sort order 4)

    With the multi-level platform (ie sort order 4*2, 8) I can't do this logic. The player should not show up above the 8 level platform even if he jumps from behind it (ie walking down towards platform). But the player can jump high enough, when he is below the base of the platform (ie walking up towards the platform)

    This can be solved if I can figure out whether the base platform tile is at a Y position greater than or less than the shadow.
     
  22. Martin_H

    Martin_H

    Joined:
    Jul 11, 2015
    Posts:
    4,436
  23. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    I have seen that post - individual Tile Rendering works for a regular topdown RPG without platforming or jumping around.
    Problem with individual tile sorting is again present when my player sprite would jump (move up on the Y) and goes over the tile's sorting pivot point. Hmmm. Wish someone from Unity addressed this. I am not sure where to post this.

    Can't help but envy the Alundra team. Those guys were just genius.
     
  24. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271


    I am so proud of what I've got here. It's been such a pleasure to learn how the physics of jumping around works. I added a flight of stairs to see what that looks like too. Adding a sideways staircase would be different but, whoever is watching - let me know if this is on the right track?

    It's really no simple task to get to working with stairs on a perspective such as this as you need to account for a certain algorithm to calculate the different heights as the character climbs the stairs if you want him to fall/jump on it. And as you can see here, it is there.

    I think I've almost got the jumping bits down to a formula. Once I do, I can focus on the artsy/camera movement stuff.

    Also I have two methods of seeing the character behind "taller" platforms. One is to make the taller platform look transparent as a character goes underneath it. The other was to add a shader for a different color for any character behind such an object.

    At this moment I am unsure which approach to go with since I actually enjoy both but the transparent one makes more sense to me because we should see everything the player sees rather than just a silhouette.
     
    isdinegnorra and YBtheS like this.
  25. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    Wow this is very cool.
    The transparent one may be the best route to go as this allows you to see objects that the player might want to interact with that are normally obstructed by a tall platform.
     
  26. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    I don't see much response on here regarding my post yet I see many views.

    Perhaps I am on the wrong section? Can anyone guide me where I can post this stuff to get feedback?

    I thought about WIP - but the threads on WIP are mostly completed games or games that are more fleshed out? At least from what I can see in the more recent posts.

    I wanted to know whether this design is appealing? I personally enjoyed it - but I've been dabbing about on blender's pixel shader to get a pixel effect on a 3D world. Does anyone have experience on this - if so - how is it different than a genuine top down 2D game with simulated vertical depth and active jumping?

    If this is/was the wrong section - again - please let me know. Thank you.
     
  27. YBtheS

    YBtheS

    Joined:
    Feb 22, 2016
    Posts:
    239
    No moderator has moved this thread to another subforum so apparently, it is deemed good enough for Game Design. You are not far enough along to make a WIP subforum thread. Instead, WIP stuff of such a small scale has to all go in this linked thread unfortunately as per the rules of the WIP subforum.

    As for why not many people have responded, it probably has to do with the fact that Game Design is one of the smallest Unity subforums in terms of active users and there isn't too much to discuss.
     
  28. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    Nice work!
    I think most didn't do it because it's hard and they had the legacy design of RPGs (they even kept the grid movement for a long time!).
    I looked into isometric movement not long ago, but I got stuck in the jumping/dropping part. I could not find an elegant solution to it.
    I tried to avoid detectors and wanted at most two colliders, but it seems to me now that that's unreachable. It's much simpler to have a couple of detectors.
    I take it you make the player switch layers according to height to collide properly? and all tiles have the same height?
     
  29. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    While it was fun - the long vision in me saw way too many bumps and unpleasantries with the design itself. I mean if we have to give the character the ability to jump at the viewpoint, players must be able to see all directions. Otherwise exploration will get boring. And I wasn't envisioning in creating a simple "room with a platforming puzzle" design, I was looking more for an "adventure platformer with combat" design. But with a pixelated look. But if you are looking to create a game where the jumping isn't the main hook, and that it's just for a couple here and theres:

    I didn't have the player switch layers, I had everything on the same sorting order layer, but played around with the sorting order number. And you gotta have an algorithmic rule for your world and this is where it was fun.

    Like the ground ( lowest floor) will always be at 0. Layer above it such as the grass, little floor details here and there that the player/characters and their shadows will always be top of will be order 1. Layer above this for the shadows will be at 2, then layer above it (the player/characters themselves) will be at order 3, then the platforms / jumpable objects will be at the 4th order. And when the player would jump on top of these objects, now those objects will be the new "Ground" and then you simply increment the player/characters and their shadows according to said algorithm. That's it.

    As for the colliders, I had four colliders for jump detection, four colliders for fall detection. It had to be separate because the fall and jump colliders can't be in the same spots and they looked really weird and this is where it got super glitchy. So I'd have a collider just beneath the square here, make it the jumpDown collider with a direction variable like down. Another collider just above this collider will be the fallDown collider with a direction variable like down. Similar for up and left and right.

    Also to prevent further bugs, I added four more "Physics detection" colliders to detect the different "types" of floors/objects so I knew which one was the ground floor by using the above algorithm calculation.
    Now this works easy. It gets tricky though if you want it to be seamless around certain corners. I calculated the jump with some numbers based on sprite size and the jumpable objects.

    ===

    Way too much work and not a lot of response either. I started working on blender now with 3D modeling and see how that goes and weigh in whether I should go the 3D route, or 2D route. 3D eliminates all the bugs and random glitching that comes with manually calculating things on the physics engine of Unity. There are games out there that render 3D objects with the exact pixel look I want to go for. Plus it looks just cool. 2D is simple to create, but a lot harder to program and seeing the bugs now, I can't imagine the game-breaking glitches and bugs that will take place as it scales. 3D takes a long while to create, but is already being done in a 3D world with 3D objects versus 2D plane objects that don't even use the z-Axis for this kind of stuff.

    We'll see.
     
    Last edited: Nov 6, 2019
  30. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    I get the graphics ordering, what you're doing is pretty much the same scheme I arrived at.
    I was asking about collision layers (sadly Unity decided to call both with the same name: layers).
    So how do you handle detecting collision on different heights? or are you catching everything and then deciding based on sorting order if the collision counts? do you use rigidbodies at all?
    collision is where I couldn't decide which way to take: I got around 3 different schemes to try but all of them were a lot of work, so I postponed it as I already have a top down game in the works.

    Agreed on 3D, this is why most people do it that way. It's much more rewarding. There's even an example: Brigador. Didn't make much of a splash, I think because it looked too 3D, even though it's all spritework and normal mapping.

    You mentioned Alundra though, and I really like finding out how they did it and how it could be done now. I'm sure there's some way to benefit from it. I've studied Mario RPG a lot.
     
  31. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    I used the physics detection colliders (simply colliders that reached farther than the actual jump/fall colliders) to detect whether the upcoming "Object" had a sort order and "tag"(I tagged jumpable and fallable objects - I had invisible fall tilemaps for this at the same sort order as the jumpable tilemap) to determine whether player should fall/jumpable/appear behind or in front of object etc.
    After playing a lot of Alundra, I believe that what Matrix software did was not entirely 2D. It just couldn't be because you could "feel" the 3D objects around the 2D pixel art that you can jump/fall around. Especially around the stairs as he speeds up and down. There are absolutely zero glitches and you can even jump on top of characters if you're on a taller object. Absolutely "everything" in that game had a 3D object on it. The art itself was definitely pixel art, but on top of that I am sure they used 3D objects like cubes for the platforming. There were several restrictions on this approach still, I was craving in Alundra to move faster or move the camera at a better angle and to have proper platforming. One of the issues with this design would be platforming (and I am glad I kept playing alundra to catch this). Platforming is infuriating at this perspective UNLESS the player is allowed to adjust the angle. Also you gotta remember, Alundra came out around the time Playstation got popular so I am positive they utilized that 3D engine.
     
  32. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    I did consider using invisible 3D proxies (and did some experiments), but increased difficulty placing objects with the editor kept me from trying more ideas. Invisible objects for everything is not easy to edit or debug.
    I may take another jab at that though, but plenty of people have done full 3D with pixelated sprites which are indistinguishable from 2D tilemaps.
    As you can see, I'm still conflicted about the issue.
     
  33. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    Not pixelated sprites. Pixelated look. You can design 3D models low polygons, but I think when rendered with a pixelated camera, that's the look I want to go for for what I'm looking for.

     
  34. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    Yeah that's not what I meant.
    There are games out there that seem 2D but are actually 3D, with billboarded sprites that match the target resolution and a camera that doesn't rotate.
     
  35. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    Definitely doable. I believe some games create 3D models and then turn them into 2D spritesheets for games too to get fluid animations.

    I just miss a good pixel looking game with fluid animations and neat colors.
     
  36. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    Yeah, Brigador does that I think!, there's a lot of approaches out there.
    Do play Brigador, it's a looker.

    I just wanna push the envelope where it wasn't pushed back then. For isometric, that means larger, taller worlds, with no loading screens, a less blocky look and decent performance. Mario RPG (and Alundra!) feels so solid and responsive!
     
  37. CoolSteelBreeze

    CoolSteelBreeze

    Joined:
    Sep 7, 2018
    Posts:
    8
    Hey, GazingUp. I know that this thread is a bit old at this point and you said that you would be switching to 3D, but would you be willing to upload the Unity project shown in the video?
     
  38. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    Err...I know I said I'd switch to 3D but I am on the fence now that I am actually trying out 3D. The design process takes a significant amount of time and I am pretty impatient when it comes to seeing the results I want to see. With 2D I got results fairly quickly.

    What do you think about the video?
     
  39. CoolSteelBreeze

    CoolSteelBreeze

    Joined:
    Sep 7, 2018
    Posts:
    8
    I think that the video looks good so far, the front facing stairs and transparency behind objects is also a great touch. I personally prefer the 2D approach with games like Alundra and the Mario & Luigi RPGs, but feel free to take your time and think over which approach you think is going to be the most manageable and fun to work with.
     
  40. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    Thank you so much for your feedback.

    I will not lie , I enjoy both 2D and 3D very much. However, if I go the 2D route, it will be a lot of bug fixing and coding work and no matter how much code I can write to mask the "3D feel" of the world with the inclusion of an active jump button in such a world - path navigation for enemy AI is what put a halt for me in 2D. I am not sure how AI can navigate the player character in a 2D world with fake 3D objects around.

    Now in 3D this would be a piece of cake with the inclusion of the Z axis and there already exists scripts out there that deal with this kind of stuff. The issue with 3D, regardless of the fun factor, is in the designing of the models themselves. It takes a long time, and there aren't many tutorials on 3D modeling as you'd think, at least not with latest software (Blender 2.8+). At best I can find 5-6 good tutorials, the rest is me figuring things out, shortcuts, techniques. It takes a lot of time but I am hoping this to reduce significantly over time. I have a 3D model already of my main guy. However, animations, little detail touches of the model like a bouncy hair, and apparently finding out that Unity itself can help with 3D models as well when it comes to animations like that. It's a whole new world in 3D and very different from 2D that I am very used to.
     
  41. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    in 2D you'd need to separate pathfinding between floors and manually place jumps between them so the AI knows that it can do it. I've been wanting to do this and recently I think I nailed down what I need, so I might be trying it myself soon.
     
  42. Dusk-Dawn

    Dusk-Dawn

    Joined:
    Feb 5, 2018
    Posts:
    3
    wow this thread was useful, I am trying something similar to your idea and I made it work with 3D world and 2D graphics but I was wondering if it was really the best approach.
    after seeing how harder it is to go full 2D I can say that using 3D physics is the "sane" way to make a top down game with platforming.
    thanks for sharing all that info too!
     
    YBtheS likes this.
  43. GazingUp

    GazingUp

    Joined:
    Jun 16, 2015
    Posts:
    271
    I'm glad you found it useful. I find it useful myself actually. Let me tell you some of my findings and why I'm back to the 2D route with unity.

    While the 3D route sure is "easier" when it comes to jumping and exploration, making 3D look and feel right is the real challenge. Maybe you can get it right but then you take a look at the examples out there that are 3D action adventures/rpgs and ones that are actually completed and successful. I did a lot of research on this and to get 3D to the right look and feel will take over 1500 years alone. Calculated this based on the fact zelda breath of the wild utilized unreal engine with 300 developers and they spent around 5+ years or somewhere around that point.

    Now either you can still try and make a 3D game but I'd be practical about it. Do I want to make a "poor man"'s zelda/dark souls /rpg game? No. I don't. But I'm sure if I tried, the best I'd achieve would be exactly that. A poor man's zelda clone.

    In turn, I looked at existing 2D (pixel art)and there really aren't many "innovative" action adventure rpgs anymore like the ones we saw in the 90s. Sure it's challenging but the challenge is purely code based more than getting things to look right. And honestly I went back to the pixel art aesthetic. I love it after all. It's so unique and interesting to work with colors and choosing the right pixels and let your imagination run wild. I missed this in 3D where I was always concerned how realistic things felt/looked vs gameplay.

    Basically tldr; I'm back to my previous iteration of my 2d idea but unity has gotten so much better since last time. You can easily sort things using custom axis sorting on Y AND Z. Check it out and be amazed.

    I've stopped working with blocks and cubes and began designing my character and a 'base' staging level for him to move/jump around. This time, I'm gonna really try and see if there's an efficient way to implement jumping on top of things instead of the hacky way I had previously so it's more scalable. Jumping itself is really easy. But getting him to jump on platforms in a 3/4 perspective world view - and give it a mario touch - there's the seller.

    Interestingly since last year another guy has been implementing the same technique I mentioned on his own game called Spirit Trail. It's a looker. But I caught an explanation on one of his reddit posts and it's very similar to my idea.

    Just have your shadow object as the "floor" to your player sprite object, so whenever the localPosition.y difference is greater than 0, initiate fall. Parent both these to one game object and attach the rigidbody to that object for physics.

    Even he mentions the complication comes from dealing with falling/jumping on platforms. I am guessing even he is trying to find the efficient approach to this.

    https://www.reddit.com/r/IndieDev/c..._platforming_in_my_game_spirit_trail/fqwxdwb/

    While I got my cube guy to jump around - as I mentioned before, getting it to properly jump/fall is tricky across varying height levels!
     
    Last edited: Jul 2, 2020
    Zeffi and YBtheS like this.
  44. Undertaker-Infinity

    Undertaker-Infinity

    Joined:
    May 2, 2014
    Posts:
    112
    whoa that looks just like I imagined.... which is great!
    Seems he tagged the platforms with height and then just searched for the right platform to stick the shadow to.
    I wonder how does that search go.... I guess if the height differences are discrete, say, 32px, it would be easy to iterate moving the shadow -32px in Y, move the internal shadow height down in 32 and then check for collisions with platforms, if any platform collides, check if the heights match... stop searching if they do.
    Another (better, but more complicated) option would be to raycast down to 0, where no platform can have height under 0, and for each collider calculate at the collision point if the distance to the shadow equals to the height difference
    And yeah, you gotta tag those tiles with height data. Gotta cheat for smooth stairs, too, or maybe have a stairs tag.

    I gotta try all that! sweet!
     
  45. Qyubij

    Qyubij

    Joined:
    Aug 11, 2021
    Posts:
    2
    yeah i know this was 3 years ago, but i've tried this, i made a new project (starting afresh) and have decided i am going to start with the basics. I've done room transitions, movement and interactions, and the last thing before combat to do would be jumping. In my old project i tried just moving the sprite renderer, but i never got past that before starting a new project because the old one was a mess. I've decided to start with this platforming stuff early and i had a basic idea: all the colliders are not where they look, but rather where they would be if they were on the ground, so if there was a house on a hill, the collider of the house would be much lower on the y axis. When the player jumps it only moves the sprite renderer and not the colliders and stuff (similar to the shadow idea before). I'm using layers so when the playerHeight (a variable set in a script named PlayerHeightEntity)gets above a certain value,the player can only interact with colliders also at that height value. i also had a gravity variable which brought the players sprite renderer back down if the playerHeight was higher than the float currentFloorHeight. And that was it. Does anyone know if tis would work well, because this is something that I'd really like in a game.