0
\$\begingroup\$

So I'm planning out this game for unity but I don't know how feasible it will be with all of the image loading and saving. I've worked with some other coding, and while I am in the process of learning C# and Unity I don't have a very informed base for my opinion.

Basically the game will be inspired by the base mechanics of the Chaotic tv show where you have to adventure to take scans of creatures and these scans will be used in another aspect of the game as cards. The creatures will be randomly generated. The problem is I want the scans to be like actually taking a picture (A picture that includes all the stats of the creature). This means I want to be able to save a picture of the scene with the creature in it as well as the stats associated with said creature which means I would have to have some sort of data base capable of storing hundreds (Possibly thousands if you include player made and prebuilt cards) of cards and the data associated with them. The scans take a picture and record the stats of the creature at that point in time so they're only highly usable for the game when the creature is in near perfect condition (Not yet defeated or attacked). I would have to be able to store scans of creatures, scans of the environment, and possibly scans of items found while adventuring. I think it would work best if only a small picture of the actual scene is saved with the stats instead of the full card and the stats, with it rebuilding the card each time it's loaded into memory. The small picture would also cut down on storage space (Possibly so small as to be high res pixel art)

Would it be unrealistic to save all of this data? Aswell, does Unity/C# even have the capabilities to take screenshots from specifically defined areas of the screen/players view and then reuse them in another area of the game instead of saving them in some predefined screenshot area?

(This game will be entirely offline so no data will need to be transferred to a different system) (Said game will also be 3d with the card playing area in 2d)

\$\endgroup\$
  • \$\begingroup\$ Focus on the problem you want to solve, not on the backstory, and not on the uncertainty if it will work. It seems like you want to take in game pictures of stuff, and put them in to a database, is that correct? If so, focus on that, and leave the rest out of the question. \$\endgroup\$ – PearsonArtPhoto Jul 1 '16 at 13:50
2
\$\begingroup\$

Yes, Unity can create screenshots from a part of the screen. Example code can be found in the question save a particular area of the scene as screenshot in unity.

Regarding your question about storage space: A 256x256 pixel texture in 32bit color is 256 kByte uncompressed data. You can expect PNG or JPG compression to reduce that, but it's hard to tell by how much because it depends on the art style of your game. You are unspecific about the nature of the meta-information you want to save with the image, but when it's just the type of creature and a couple integer and float variables representing its stats, it would surprise me when it gets larger than even a single kByte.

So when the player creates 1000 such "cards", they will consume a couple hundred MB. You did not say what platform you target. For a desktop PC that's ridiculously little data. But it could be a bit much when you target low-end mobile devices.

By the way: The PNG format allows to save arbitrary meta-data with the image without impacting how the image looks when viewed. I have seen games where the player can export their creations in form of PNG images. These images look like they are just a screenshot of the creation, but have the game-relevant data embedded as ancillary chunks. That way the players can share their creations anywhere on the internet where images can be posted, and people can save the image and import the creation into the game.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.