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

Not So Flat - a free "2.5D" platformer

Discussion in 'Made With Unity' started by 0xc0dec, Apr 20, 2015.

  1. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Hi community!

    I'd like to share with you the news about the release of my recent game Not So Flat. This game is a short experimental puzzle platformer where your task is to complete levels by finding and opening an exit portal that leads to the next level. Sounds ordinary, but the "platformer" component of the gameplay is not very conventional (i hope the gifs convey it well):



    I'm not sure if the idea is unique somehow, so I'm hoping for your feedback to check this. The game is free, you can grab it at Itch.io (link below). Keep in mind that the game is a proof of concept, so there're not many levels, but those that exist are quite challenging.

     
    Last edited: May 4, 2015
  2. Callski

    Callski

    Joined:
    Feb 3, 2013
    Posts:
    130
    This is really cool!
     
    0xc0dec likes this.
  3. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,834
    Neat. Reminds me a bit of Fez.
     
    0xc0dec likes this.
  4. 1HpLeft

    1HpLeft

    Joined:
    Dec 13, 2012
    Posts:
    81
    It's look really great. The camera movement looks good and doesn't feel bad.

    Nice works ^^
     
  5. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Thanks! The camera took me a great deal of work and tuning to make it feel fine :)
     
  6. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Btw the gifs are a bit outdated, current game visuals are slightly different.
     
  7. 1HpLeft

    1HpLeft

    Joined:
    Dec 13, 2012
    Posts:
    81
    You should make a web version with a few levels, so we can test the game and give you more interesting feedbacks.
     
  8. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    What's wrong with the standalone version? :)
     
  9. 1HpLeft

    1HpLeft

    Joined:
    Dec 13, 2012
    Posts:
    81
    If I can I avoid downloading stuff ^^ , and I know I'm not the only one like that
     
  10. theANMATOR2b

    theANMATOR2b

    Joined:
    Jul 12, 2014
    Posts:
    7,790
    Stand alone version works well here and is very optimized (small).
    Downloaded but have yet to check out.
    Will give feedback when I play it.
    Gifs look great. :)
     
  11. TheRaider

    TheRaider

    Joined:
    Dec 5, 2010
    Posts:
    2,249
    Game looks awesome and well done, but I with 1HpLeft in that I avoid downloading stuff too but I am pretty likely to try a webplayer.
     
  12. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Thanks guys, but I'm still not sure that the web version is a good idea. The latest Chrome doesn't support web player out of the box, and the WebGL build seemingly lacks support for a full-screen glow. To me these problems are more serious than the need to download an archive :)
     
  13. renman3000

    renman3000

    Joined:
    Nov 7, 2011
    Posts:
    6,697
    Looks awesome.
    Couple,of questions. Are you going to make a mobile version? And can you reveal how you are creating the effect of how the player changes panels? So cool. I am guessing cameras, where their view is being projected onto a particular panel?


    Anyhow, very cool!
     
  14. TheRaider

    TheRaider

    Joined:
    Dec 5, 2010
    Posts:
    2,249
    Yeah that really sucks however it at least gives you instructions how to enable it.
     
  15. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Thanks!

    I have no plans for the mobile version. The game has ended up being quite short, so I don't feel like it's worth spending another few weeks on porting it. Maybe later, if there would be more levels.

    The idea behind the algorithm is fairly simple and has nothing to do with the cameras :) The character is a gameObject with a quad attached to it. Each frame I cast many rays from many points and in various directions to detect distances, then having that information and player input I calculate the movement. After the game object has been moved, the algorithm adapts the quad mesh: recalculates vertex positions and uvs, if needed. The moment of switching planes is just a specific case in that process, when the algorithm detects that the gameObject needs to be rotated by 90 degrees (or similar, depending on the case) around some axis. When it's done, the quad mesh, again, gets adapted to the new gameObject position.

    The Offset shader property helps the quad stay ontop of everything else in the level because the geometry is coplanar. In earlier versions I used to offset the quad away from the panel quad by a small amount, but that led to some problems that were more difficult to solve than to just make the character move in the panel planes all the time.

    I'm planning to make another devblog post about the technical details and will post a link here.
     
    theANMATOR2b likes this.
  16. renman3000

    renman3000

    Joined:
    Nov 7, 2011
    Posts:
    6,697
    Wow.
    Genius.
    Seems expensive tho. Would the method I suggested, perhaps be easier? Anyhow, if it ain't broke!

    Cheers!!!!

    ps. I think this would be a great game to play on mobile.
     
    0xc0dec and theANMATOR2b like this.
  17. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Not sure what did you actually suggested (just abstract "projection of camera view"), please be more specific :) Anyway, mesh manipulation is the least expensive step overall - recalculating 4-6 vertices is a joke. Distance calculation needs to be performed in any case to detect in what directions the player is allowed to move. Considering the fact that the game is small and not computationally complex, casting several rays every frame is also not a big performance hit.
     
  18. renman3000

    renman3000

    Joined:
    Nov 7, 2011
    Posts:
    6,697
    True.


    I was thinking, for a level, you could map it out, in 2D. A single plane where all objects exist, player at his start pos, all blocks and portals.

    Then, you could have 6 cameras, each designated to a specific area. Then each camera projects it's view onto a specified side of the game "cube".


    :? I have not worked with rendertexture and I don't know if this is even practical, but it would potentially make level building a snap and save in calculations. Really, it's just how I imagined you had done it.
     
  19. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    But the level is not a cube :) It has more than six sides, so, if I understood you right, we'll need as many cameras as there are level planes, each rendering it's own plane. Also, I can't imagine how everything else in this method should be implemented. Texture projection, if involved somehow, wouldn't make distances calculation easier anyway.
     
  20. renman3000

    renman3000

    Joined:
    Nov 7, 2011
    Posts:
    6,697
    So you are satisfied with your method? Either way, it's very well done. I can't help but think this could do very well, mobile or otherwise.

    :)
     
    0xc0dec likes this.
  21. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Well, it works and that's good, and building levels is easy (from the technical point of view) :)
     
    renman3000 likes this.
  22. renman3000

    renman3000

    Joined:
    Nov 7, 2011
    Posts:
    6,697
    Yah,
    That's the thing I think. For indie developers, to figure out a base template from which you can level build in infinite patterns very easily.
     
  23. CroHack97

    CroHack97

    Joined:
    Oct 26, 2014
    Posts:
    46
    Could you share that algorithm?
    nice work btw
     
  24. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46
    Thanks! The algo is not very formalizable to describe it strictly. It's just a bunch of raycasts and routine calculation of distances. And lots of nuances that has to be taken into account to make player not fall through walls in various level configurations. The most interesting part is probably the code behind movement and jumping. Anyway, I'm making a blog post about the details and will post link here.
     
    Last edited: May 1, 2015
    CroHack97 likes this.
  25. luniac

    luniac

    Joined:
    Jan 12, 2011
    Posts:
    614
    i love the wrapping around the corners. This kind of stuff stumps me, i don't know anything about modifying vertices, kind of above my level, so im very impressed.
     
    0xc0dec likes this.
  26. 0xc0dec

    0xc0dec

    Joined:
    May 11, 2012
    Posts:
    46