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

2.5D (3D character on 2D background) Point Click game in Unity3D?

Discussion in 'General Discussion' started by poiu789, Jul 7, 2011.

  1. poiu789

    poiu789

    Joined:
    Jul 7, 2011
    Posts:
    3
    Hi everyone :)

    I'm not very expirienced in gamedev, so I decided to start with something "quite" easy. I want to play arount with some small ( / short) point click adventure game (just like Syberia for example). I have been searching some 2.5D dedicated engines for a while, but in most cases they are quite old. Like 70' - 80', let's say :confused:. The only new stuff is Wintermute.

    But the problem is that Wintermute is not "next-gen" engine. I'm not very expirienced in gamedev, as I said, but in 3d graphics a bit. So I need engine that support normal maps, specular maps, SSAO and so on. Unity does. And Unity is generally most powerfull and flexible than Wintermute, so learning Unity seems better in case of future projects.

    But the question is:
    Is there any possibility to work in Unity in some "smooth" pipeline in case of such project? You know, a workflow like this:
    1. Model, uv/materials, lighting, etc etc etc, render high quality background in blender.
    2. Import background to Unity.
    3. Import camera setting from that-background-project to Unity (so Unity can render in realtime the character in the same perspective as background was).
    4. With few clicks define area of the 2D background that should be interactive. Like doors to next scene / view / or level. ( The thing that I am afraid of the most, is that I have to create some invisible meshes that covers expected area of background everytime I want to define some static, but interactive, element from the background :( )
    5. Insert some 3D objects, npc characters, and generally all the needed stuff.
    6. Script these scene.
    7. Move to the next scene.

    Yep. That's my problem. It would be very nice if someone can help.
    And maybe there are actually any 2.5D (but NOT some like full 3D, but with 2D gameplay) projects in Unity?

    Thanks :)
    And sorry for my poor english.
     
  2. stimarco

    stimarco

    Joined:
    Oct 17, 2007
    Posts:
    721
    Yes, it is possible. Unity can do anything you want it to do.

    But some things will be harder than others. Unity is a 3D engine at heart, so 2.5D requires some additional work on your part to prevent the underlying engine from treating the 2.5D elements as full 3D.

    There is a tutorial on 2.5D games in the Resources section, here. It's a 2D platform game using 3D models, but the basic problems it solves will be similar to those you're going to come across.

    Re. points 1-4: you'll have to handle the collision meshes separately if you go for the traditional, old-school pipeline you're describing, but I wouldn't do it that way...

    The only reason the backgrounds were pre-rendered like that back in the Sierra and LucasArts heyday is because the computers of the time simply weren't up to handling full 3D graphics of that quality. (In fairness, we're talking about the EGA, and early VGA era, when artists still had to worry about how many colours the display could cope with.) Even moving sprites around the screen had to be done using the CPU, because the PC had no standard way of handling custom hardware acceleration; it wasn't until DirectX came along that this began to change.

    Modern game engines like Unity are more than powerful enough that you can easily use real-time 3D model rendering instead, so the collision meshes are generated for you automatically. Even an iPad can render some seriously impressive visuals, so your customers would need to be using some utterly geriatric PCs to have problems with this approach.

    Just create your scenes in your modelling package and import them—model by model, if you prefer—into your Unity Scenes. You can then use a modified version of the Third Person Character Controller scripts, with some simple pathfinding AI. (For your first project, this could be done using simple waypoints: when the user clicks somewhere, you work out what object is being clicked on, find the nearest waypoint to it, and make the character follow the waypoints between where it is now, and its new destination. Sounds a lot harder than it really is.)

    With all the fudges and kludges out of the picture, you can then make a full-on 3D point-and-click adventure game, with shaders, panning and dollying cameras, depth-of-field effects, and so on.

    And it really is about damned time someone did this. :)
     
  3. Chaoss

    Chaoss

    Joined:
    Jul 8, 2011
    Posts:
    327
    I'd love to play a good adventure game, I thought Unity could only make fps games?
     
  4. jeffro11

    jeffro11

    Joined:
    Jan 7, 2010
    Posts:
    185
    Unity can be used to make anything you want. It is a game engine.
     
  5. Chaoss

    Chaoss

    Joined:
    Jul 8, 2011
    Posts:
    327
    No it's not a game engine, it's a bannana you fool!! :D


    but in all seriousness I just saw 1st person and 3rd person controllers there
     
  6. jeffro11

    jeffro11

    Joined:
    Jan 7, 2010
    Posts:
    185
    Just because those two things are popular doesn't mean its restricted to only those two things. Besides your own game should/will require more control then those basic scripts can give you anyways.
     
  7. Artimese

    Artimese

    Joined:
    Nov 22, 2009
    Posts:
    794
    Lol are you serious, theres no such thing as engines that can only make fps games (not professional ones atleast), if an engine can make a fps, then it can make anything you want, the limit is your imagination... (and skill...)
     
  8. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Why would you say that, looking at the examples? it has clear examples in most genres and makes almost every concievable type of game on the appstore.

    My game is actually an app itself, not a game. Made in unity.
     
  9. poiu789

    poiu789

    Joined:
    Jul 7, 2011
    Posts:
    3
    @stimarco
    Thank You for Your extencive respond. You're right, approach I described is old-school, but often in use these days. Why would I use pre-rendered backgrounds? Because I want to achieve such level of details like this:
    http://forums.cgchannel.com/uploads/gallery/4724/1852637885fullimg.jpg
    http://4.bp.blogspot.com/_tQPDOweQXSc/TRjySTSSI8I/AAAAAAAAAAM/mV3lWzZgNcg/s1600/2.jpg

    I know, that's huge amount of work, to create such backgrounds, but that's ok for me. And - of course - You must agree, that such level of details is unreachable in realtime graphics. Anyway not with my developings skills, so I want to use pre-rendered backgrounds because that's simpler.

    Thanks for Your link, I will try to play around with this tutorial - at least, there are answers for the most basic questions, so I don't have to ask them here :p

    - -
    Could You tell me how to set up the unity camera the same as it is in the project with background (in blender)? -> That would be very helpfull for me :)
    - -

    @ hippocoder - Artimese - jeffro11 - Chaoss
    Many thanks for Your respond, but:
    I know, that in unity possible is everything :d
    My question was: Is it posible to achive some comfortable workflow in working with 2D backgrounds in unity, because that is not so obvious. At least for me. That's my first meeting with all the unity stuff :p
     
  10. stimarco

    stimarco

    Joined:
    Oct 17, 2007
    Posts:
    721
    Hi Poiu789:

    Those images you linked to use radiosity lighting, but this can easily be baked into your scenes by the modelling package. With light-maps to handle the static elements, you only need to worry about lighting the dynamic stuff—the player, NPCs, etc.— using Unity's lights. The pre-lit scenery sits on a Unity "Do not light me!" layer as the lighting is already done.

    Aside from the lighting in those images, there's really nothing there that Unity couldn't handle. The models don't look especially complex. You would probably use bump-maps and other tricks to optimise the scenery, but the players wouldn't notice much—if any—difference. Remember, this isn't an action game. You're not trying to render an entire interactive city like Grand Theft Auto, so you can afford to throw more polygons and processing power at rendering these much smaller scenes.

    For grand landscape vistas, you'd just pre-render the background imagery and place it behind the main scene. (You can do this to provide the views seen through windows, for example.)

    Seriously: what you're asking for is not that hard. The only thing Unity can't do natively is radiosity, but, as pointed out above, it can be "baked" anyway as most lights are usually static.
     
  11. PrimeDerektive

    PrimeDerektive

    Joined:
    Dec 13, 2009
    Posts:
    3,090
    I happen to really like the look of adventure games with hand painted backgrounds and 3d characters... I know thats not exactly what poiu is going for, because his prerendered backgrounds look like 3d geometry anyway; but I would be curious as to how you would pull something like that off, if you really wanted to use static, hand-painted backgrounds.
     
  12. poiu789

    poiu789

    Joined:
    Jul 7, 2011
    Posts:
    3
    @stimarco
    It was photon mapping / Indirect lighting / photon tracing etc. Radiocity is quite old technique, but that's not important. The important thing is that - I must say - You gave me food for though. Maybe You're right, in case of such small scenes polycount would be higher per object. And light mapping could do the trick. And - after all - rendering times are smaller when rendering in clay.

    I must give it a try 8)

    Thank you a lot :)
     
  13. stimarco

    stimarco

    Joined:
    Oct 17, 2007
    Posts:
    721
    For hand-painted backgrounds, I'd probably do it the way movies do: build a virtual set, with painted "flats" where needed, and 3D props using hand-drawn textures in a matching style to provide the in-scene furniture.

    The characters would need suitable treatment too, such as a cel-shader, if you want to go for a hand-drawn / painted look for everything.

    I actually worked on a point-and-click way back in the 1990s, so I know first-hand how it used to be done; I worked on a bunch of mini-games for it. (Incidentally, anyone who thinks scripting is "hard" today should try using a custom-built scripting language from the "Not Invented Here" school of design: a language that only had 1-bit flags for variables!) It was a project my then-boss was making for Gametek, and no, the game was never released. Mercifully.

    I did write a full-on FAQ on this very subject many years ago, but I can't find it. It was posted to USENET. Probably either in the comp.games.development.* hierarchy, or its predecessor: rec.arts.programming.games. (I think that last one is correct. It's been over 10 years!)