Search Unity

High-res and Low-res version of a 2D-game

Discussion in '2D' started by Pollyfun, Feb 20, 2014.

  1. Pollyfun

    Pollyfun

    Joined:
    Nov 6, 2009
    Posts:
    13
    I've mostly completed my first Unity-game, and will soon upload the first version for App Store review (and later Android etc).
    I want to use high-res versions of the graphics for iPad 3/4/Air, and the low-res version for other devices.

    So the preliminary plan now is:
    * Low-res: pixel-perfect in 960x640
    * Hi-res: pixel-perfect in 2048x1536

    Most of the graphics is done in Illustrator, so it can be saved to any size.
    All sprites and GUI have their sizes set in percentages of the screen, so they stretch to fullscreen in any resolution.
    The game autodetects the resolution and choose either low or high res graphics.
    For example: 800x480 will choose low, 1920x1080 will choose high. (Any 1280+ will probably use high)

    The game only has one scene since most objects are instanced dynamically. I plan to have one scene for low-res gfx, and one for hi-res gfx. The scene contains a ContentObject-instance with references to low-versions or high-versions of all graphical files.

    A few questions:
    1) Is this a good way to handle it?

    2) Players who will use the low-res graphics also have to download the high-res graphics (and vice-versa) since all is included in the same build.
    This is how other (2D) games do it?

    3) Have I missed some important or useful technique for handling this?

    Thanks
     
    Last edited: Feb 20, 2014
  2. Pollyfun

    Pollyfun

    Joined:
    Nov 6, 2009
    Posts:
    13
  3. GMM

    GMM

    Joined:
    Sep 24, 2012
    Posts:
    301
    I have not tried to implement a system like this, but you could implement a check for devices that run a high screen resolution(like you thought about) and prompt the user to download a high res package. If you are using Unity Pro you could handle the download as an AssetBundle, that should work well, otherwise you could possibly use WWW to download each asset in sequence and save to the App's local folder.

    I am curious to why you would want to use two different scenes to handle the new assets when you are already instancing them dynamically, just implement a system that that decides if the game should use a high res texture found in the local folder.
     
  4. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    I never actually bother with pixel perfect in my 2D games. Many retro games weren't actually pixel perfect either. Take super nintendo for instance, or anything that drew stuff scaled.

    Sometimes I wonder if developers are not actually making tonnes more work for themselves that they don't need to. Your customers will not notice.
     
  5. GMM

    GMM

    Joined:
    Sep 24, 2012
    Posts:
    301
    Obviously a lot of developers spend a lot of time on making things that most consumers wont use(or notice), but it really depends on the product. Something like The Other Brothers would never need high res assets for high res screens due to the nature of the game(loved the game btw), but for some games it does add a lot.

    I wont fault any developers wanting to get the best end product possible, but everything depends on the product and the time needed to implement the said things.
     
  6. CarterG81

    CarterG81

    Joined:
    Jul 25, 2013
    Posts:
    1,773
    I'm confused. What does this have to do with pixel perfect? Especially when he said he streches his sprites to fit the resolution.
     
  7. Looking4Game

    Looking4Game

    Joined:
    Aug 21, 2013
    Posts:
    16
    Sorry for posting my question here, but it relates to this topic.

    I am using 2D Sprite of Unity 4.3.x. When I create GUI of my game. I drag Sprites from Resources folder into Scene Windows. Then I allocate their position on scene. After that, I create a new Prefab, group all Sprites into new empty gameobject, and drag that gameobject into the prefab to save it, and delete the gameobject on scene.

    When I run game, I just initiate saved prefab to show Sprites on screen and set position where I want to it appears.

    My sprites in my game are designed for 1024x768. I already have Retina Texture size (double size) for iPad Retina Resolution (2048x1536).
    I want my game when running on iPad Retina Resolution, It will download contain (Retina Textures) that i will upload on some cloud service, using AssetBundle/WWW API.

    My question: How can I apply Retina Texture to my game (replace old textures for ipad resolution) that I don't need to change prefabs that I designed/created?

    Anyone can help me? Thank!
     
  8. Kurius

    Kurius

    Joined:
    Sep 29, 2013
    Posts:
    412
    Well the 2Dtoolkit plugin can automatically do that for you.
     
  9. Looking4Game

    Looking4Game

    Joined:
    Aug 21, 2013
    Posts:
    16
    Thank for reply, but I want to use native code than a plugin like 2Dtoolkit or NGUI.