Creating a game with Zelda graphics - what would it take?

Hello, this is mostly to fullfill my curiosity, because I am just a beginner. I would love to know what would it take to create a game, using Panda3D, with graphics like those in the new Zelda game. An example:

media.wii.ign.com/media/748/7485 … 14389.html

Or like in ICO:

media.ps2.ign.com/media/014/0148 … 84908.html

I know this is impossible to do without experience, but I would just like to know. I would like to create these vast, mysterious, beautiful, breathtaking landscape, but I have no idea from where one would start (look at my other topic). Thanks a lot for sharing your experience with a newbie!

i already had an eye on this game earlyer… about a few weeks ago. the technique i described in the “MUD->MORPG” thread was aimed to create landscapes similar to the one you can see (the reason why i made it so complicated is because a MMORPG need a very large world … but grafic-quality would be the same)

well what you need.hmm…
a few good textures you can use (or someone who can paint them :slight_smile:).
for terrain i’d say you need about 4 base-textures you can later use to create transitions like grass-cliff or grass-road or whatever.

then you need a modelling package like max,maya or blender which allow you to preview to model and preview the actual world ( i notived blenders game engine is pretty handy when doing previews, it’s close to panda’s results and you can start it with a single button (even if its just a still frame))

well if you add a additoinal texture to all objects using world-coordinates a texture input you can create nice shadows from the clouds above.

if you add some small shaders to blur the objects in the far distance and a bloom shader (well later is pretty easy to do) you are already pretty close to the original zelda grafics.

and of course you need a few day’s off to put everything together =)
oh jeah… for the characters… you need someone with a talent :stuck_out_tongue:.

http://media.wii.ign.com/media/748/748589/img_3914389.html
this screen is pretty usefull and explains quite a lot.
i took the freedom and added a few scribblings =)
in the end the whole scene contains only 3 different textures, an simple build ground, a few trees , a few leafes of grass and the main charakter aswell as the bird + a sky.

nintendo knows how to make some simple stuff really good looking. =)

so there is no magic in this game. just a nice style though the whole game.
have a close look at this one… count the edges on the terrain, and the different textures.
about 5 different textures, a simple made landscape, 3 or 4 different trees , the charakter, shadows(needs some work to get them into panda), a bloom shader and a water shader(bottem left).
http://media.wii.ign.com/media/748/748589/img_3863246.html

long speech short sense:
everything you see can be made by normal hobbyist if they take the time to fit everything together.
it actually wouldn’t be that hard. as long as you manage to let everything look like they really belong together. (well the main characters would need a few weeks or more to be made by hobbyist, especialy the textures. but if you have a few “professional” textures nearby you can look how they made it and learn from it. terribly slow at the beginning but the results are rather good.
one thing for shure… it takes a lot of effort =) but it’s doable even for non-professional people like most of “us”. i’ll awnser your more detailed questions in the other thread right away.
greetings
thomas e

Sir Thomas, this is more useful than any tutorial I could ever find on blender or any other website about game models and 3d graphics! The sketch you made really helped me understanding it all better. I have some questions about this.

  1. If one were to do this in Panda, would he have to create the landscape model on let’s say Bryce or Blender, fully texture it, and then import into Panda? Or it is not possible to port it straightly to Panda?
  2. I have noticed that some of the terrain generator programs (terragen, but also Bryce) generate landscapes with thousands and thousands of polygons - this isn’t good for a game right?
  3. Is there some place where I can learn more about shaders? At the level I am right now (still have to touch Panda docs beyond the first tutorials, and I am just a Python beginner), I just need to know what they are, not how to do them :slight_smile:

Sorry if I abuse of your time, but finding some expert answering these newbie questions is like finding the Graal!

hey please dont call me sir… dosent suit me… neither am i a graal… i dont spend eternal life either… if you are looking for something more epic or whatever why not the tree of knowledge :wink: … just kidding

  1. thats the way to go. create the landscape, export it and load it into panda. there are a few things you have to concider.
    -texturelimit per mesh (most graficcards have a limit of 2 to 16 textures per mesh so you need to split up your landscape into pieces so that each piece dosnt contain more textures than the texture-limit of your targeted hardware. my geforce 4 ti has a limit of 4 textures)
    they still can be exported as a single object so dont worry =)

  2. indeed not good of realtime engines. this is usualy solved is stuff like LOD or more advanced terrain optimization algorithm like ROAM or SOAR. unfortunately panda doesn’t support any of these advanced techniques (but could be added with some c++ coding)
    as you can see you can get cute grafics without any of these terrain stuff.
    you usualy need ROAM or SOAR for flight simulators or simmilar.
    the most impressive thing i found was the ranger MKII terrain engine. google for it and your jaw will drop. dont panic it’s not very well suited for most of the games although its impressive. actually it’s only good for flight simulators.
    zelda dosent seem to use these terragen/bryce terrains. they dont allow cliffs/overhangs/caves or holes. these terrains (usualy based on heighmaps) also are prefectly regular (in the horizontal) and usualy require a more modern hardware to texture them properly (or you need someone with pretty good opengl programming abilitys to lower the hardware requirements)

for zelda like grafic just ignore the bryce/terragen stuff and build it from hand. allows ways more details and freedom anyway.

  1. if you just want to know what shaders are… well they a programmable structures on your graficcard. they can be programmed to do things you for what you needed to fixed funktion in a hardware earlyer. felxible hardware so to say. they can be used to manipulate,create,transform (or whatever other operation you might think of) vertices and pixels. they can deform your model as well as change the color of your texture without the usage of your cpu (which saves much). theoretically it’s possible to create a completly generic world with landscapes, trees, grass, etc just inside your grafic card with shaders… but it’s usualy not done this way. but you could use them to create a 3d-landscpae or terrain, aswell as the optimisation for it.some people already did this with quite some succses

as far as i know panda uses the CG shader language. a C-like language to program your GPU (i think nvidia invented the language together with MS). you can find a lot of information about CG on the homepage http://developer.nvidia.com/page/cg_main.html
see the documentation. there you can find general programming rules, examples , sample aplications ,SDK’s and whatever. unfortunately no real tutorials :smiley:
the englich wikipedia gave some hints as well as google. try
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=47
http://xxx.lanl.gov/ftp/cs/papers/0302/0302013.pdf

a probably good advice from mine… try to avoid shader =) and if you really need some. try and ask around. maybe someone already has your shader.
i think you need a good understanding on how 3D grafic is beeing processed and drawn to write your own shaders. so it’s probably to much work to just get a certain effect. sometimes you can achieve the same thing without shaders =) bloom for example. ask for details :wink:

to speak of games and such. lighting is another important factor besides textures. looks like zelda is using something near vertex based lighting (you can bake such lighting into the vertex color) and on top of it realtime shadows (you would need a shader for this in panda) well even a “blob”-shadow is doing his job. and it works without any shaders =)

bdw. if you are looking for a blender2egg exporter try http://www.wickwack.com/panda/
thats the one that worked best for me.

So how do you do a bloom effect without shaders?

thx for asking =) .thats easy. i did this to create a bloom effect in blender (using the new node system of blender really makes this one easy)

as for panda:
all you need to do is to set up an offscreen renderer, render the scene so you can grab it as texture.
now you should have the picture of your rendered scene, rescale the texture down (or blur it otherwise but rescaleing is pretty simple, you can also render the same scene in a lower resolution again) than “add” this buled image to the first texture (it’s often neccesary to dimm the addition a little.
you already get a basic bloom effect with this. a little nicer one can be archived when you are able to mainipulate the color-curves but with a little bit of twaking you should be able to get a neat blur in panda without any shaders or performance hits. the trick above usualy works with every graficcard supporting 2 textures (so to say almost every card in the world is able to produce it)

i haven’t seen the “screen” blend mode for textures here in panda, also gives nice results. a small demonstration (i used some screenshots and manipulated them with gimp as described above).
if you dont like the results you can start tweaking the bloom effect in panda using different resolutions for the bloom-image or use a second semi-transparent bloom image above the normal image to soften the bloom effect further. also pandas’s texture combine modes allow to mix the bloom-image with a constant color to avoid over-bright scenes. usualy it looks better when the bloom image is about 20-30% darker than the original.

a very simple thing i did. i took a blender rendering, importat the image into gimp, duplicated the layer, scaled the one layer down and up again (later one is neccesary for gimp only since your graficcard’s texture filter takes care of it) in this example the resacled image has only 16x12 pixel size.

to see the same effect in an actual game i took a screenshot of Planeshift
see here http://home.arcor.de/positiveelectron/files/shot21.jpg
and with bloom http://home.arcor.de/positiveelectron/files/shot21-bloom.jpg
well the UI blooms too but in panda you can have them renderd afterwards.

actually it’s just a cheap trick and it lights up the whole scene quite a bit. but these side effects can be corrected or worked-around.
actually it’s nothing more than a render to texture. even if you re-render the scene with 16 antialiasing you wont get into trouble since these blured images usualy have between 16 and 32 pixel width.

i dont know what the “screen” mode in gimp’s layer blending stuff does but the results are a little bit better (subjective judgement) than “addition”. but doesnt look like panda has this screen mode. perhaps not available through hardware.
well the basic is bluring an image and add it to its original. there are lots and lots of possibillitys to tweak the process and the result without shaders.
and to awnser your performance questoins. this trick is fast,and with a little bit of twaeking its fully controllable.
well you should have texture filtering active or you’ll get a blocky-bloom :smiley: also a very intresting effect…

for more screens take gimp, your favorite game and give it a try =)

How come most of the low-budget games have those washed-out textures on the terrain? Not using detail textures or something?

Steve

because (at least in the case of zelda):
-this actually isn’t terrain but just normal textured geometry
-adding detail maps is work :open_mouth:(remember you have to texture every surface twice…)
-you need your modelling package and exporter which can handle detail maps/mutlitexturing
-it needs quite some additional work to make detailmaps really look good
-detail maps often have issues when displayed in the distance (heavy flickering)
-the game wouldn’t look any better with detail textures… as long as you are not suppost to strare on the ground nobody will care anyway.
-it sometimes just dont fit into the style: a cute cuddling zelda world full of wonders… and… detailmaps?! :wink:

… as you can see there are a hell lots of a reasons to not use detail maps. and if you ask people playing this game if wouldn’t look better with detail maps you’ll most likely get the awnser:“what are detail-maps??”

Thomas, sorry to bother - just some more newbie questions:

  1. Which the difference between terrain and textured geometry? I thought that terrain was still polygonal stuff covered with textures, but generated with height maps?
  2. What are detail maps?

And what about Colossus, the game shown in the gallery? Did they create custom shaders just for the game?

Thanks a bunch!!!

Well, I must be one of those that like to stare at the ground because I notice it, and think it looks bad!

Steve

  1. technically they are both the same, geometry with a texture. but they are different to use. but especially texturing is often different. to keep it short. a heighmap is more or less a plain area with vertices moved up or down accordingly to the the heighmap image. therefore you cant create vertical or overhanging terrain parts, holes and caves arent possible either. in the end they are the same. but they are different to make, texture and have their own dis- and advantages =)

  2. detail maps are textures which are layed ontop of another texture. they are usualy scaled down to add details. this is common when using terrains. one texture to define the color of the ground and a tiled detail texture to bring small stones or grassy structure into the blury colors.

jep. colossus usses a lot of shaders. you can assume that most of them are custom made. although it would be possible that they took them from somewhere. but i think that was part of their challange to write them.

About detail maps - and how do you add them in your games using Panda? Are they exported from modelling software or there is some special procedure to add them in Panda?

you usualy need a modelling package which can handle multitexturing (most does: blender,maya,max… and most others) but you need a exporter which exports them propperly. i think the only exporter with multitexturing support atm is maya (if one exists at all). you can also add a detailmap manually by manipulating either the egg file or via python during runtime.

but if you use custom made terrain like in zelda you’r better of with higher resolution textures than detail maps. saves a lot of trouble =)

Thanks for the reply! As you may guess, I am a big Zelda fan. Would it be possible to achieve something like what we have seen in Legend Of Zelda: The Wind Waker? As the name suggests, is cell-shading a shader?

cell shading usualy is achieved with a shader. but the name itself has less to do with the actual shader of the GPU. more with the shading (hell-dark) of the surface.
usualy you use gouraud shading.
this cell-shading shader also comes with panda. see the toonshader example =)

“Legend Of Zelda: The Wind Waker” like grafic should be no problem at all. even as beginner you can aim for more grafic details (i would add more vegetation :stuck_out_tongue:).
but grafic isn’t everything=) zelda has a great story (never played but heared a lot) and the game itself seems to be fun to play, dont forget fun when making a game.
i guess even as beginner you’ll have no real problems with such grafic. if you take your time with the charakter animations and the gameplay you should be able to come up with a nice littl game. if you need help-> just ask me, i have nothing to do anyway so i wouldnt mind helping out with 2d/3d art or advices. just drop me a note per ICQ or yahooIM (number/name can be found in my profile)

Thanks a lot, I will do! Thomas, what kind of experience do you have? You seem to be a real professional… I have learnt more from your threads than from dozens of other threads on gamedev!

P.S. Where is the toon shader example? Cannot find it in the docs?

the example can be found in the panda sources ( i dont know where it is on windows or in pre-compiled packages) but thats the path in the source directory.
/panda3d-1.2.3/samples/Feature-Tutorials–Cartoon-Shader

well i’m honored that you think i’am a professional. but CG art and game dev are just a mere hobby. i gatthered knowledge over (think its more than 8 years now) with lots of different programms, engines and dev-teams. my experience consists more or less just of helping out other teams who tried to develop something.
so i never really stayed with a project from beginning to end, just helped out with a few models or tips. but i was able to gather my skills in texture painting, modelling, unwrapping, animation, compositing, and lots of other stuff(mainly theorie about 3d-realtime grafics in general). lots of unused skill …so to say. dont hesitate to write me… i’m bored anyway.

That’s a great example, thanks, I missed it. So one could apply the example to full scenes like Roaming Ralph? I will contact you when I need help then, even though I think your answers to generic questions could help a lot of people also in the forums!

shure you can apply it to whole scenes… but if you need help with scripting you better ask some python/panda guru in the scripting sectoin. i’m pretty new in this field too and i never used shader before.

PS: just write me.i need something to do. i’m bored to death. wouldn’t mind to make a model or 2, some plants or whatever, i need to kill some time.

ThomasEgi, I will ask your help! I have one question about cell-shading. How are models for cell shaded games created? I mean, when you create a model for a cell shaded game, how do you texture it? Do you use just flat colors? Or you use some different texturing technique? Lotsa questions!!!