Author Topic: Advanced tips for map making  (Read 14602 times)

Offline Tikoucas

  • Curious Wanderer
  • *
  • Posts: 33
  • Country: gb
  • Floof-O-Meter: 42
  • Fluffy
    • View Profile
Advanced tips for map making
« on: December 06, 2018, 07:57:26 pm »
This is meant for experienced map makers who at least have made a map before.
Making a good map that runs smoothly and looks good is a very hard work!
If you know a tip for map making, feel free to comment.



Use heightmaps of 16 bits instead of using 8 bits for smoother terrains.
8 bits allows you 256 terrain levels while 16bits allows you 65536 levels. 16 bits will avoid those terrain ripples.
Many applications don't support 16 bits grayscale images, I know photoshop and maybe gimp do.
If you have an 8 bits grayscale PNG image, once you are done with it then convert it to 16 bits and apply a soft blur to it, always keep a back-up of your 8 bits one!


heighmaps and terrains
Heighmaps can be 1025x1025 for higher terrain detail, or any size (2^n)+1, where n=1,2,3,4,5... usually not needed but handy to know ;)
-For terrain masks can be 1024x1024, or any size 2^n, where n=1,2,3,4,5...


Box collisions mush be underground by at leat 4 units
When making objects and using a collision box, make sure the collision box is at least 4 units under the terrain, so you don't run through the collision.
The collision should be thicker than 8 units to make effect of a solid object.

Avoid acute angle collisions
Ever walked under a ramp and be thrown to the air? unless you want that you should avoid them.


Careful with object groups
Create your own object group(s) for your map with unique names, using common object groups that other people use for their maps (ex: my_rocks, my_plants) might cause conflict with modified versions of them.
I personally like to use a single object group for each map, keeping the minimum of objects and that way you export your map with only what you map needs.
-Pros. Small and fast loading maps, best technique for single or not too many maps.
-Cons. Time, it might not be the more convenient way if you create a map pack

Other people like to create various object groups for their maps, having their objects organized in to categories.
-Pros. quick and easy map making, convenient for map packs where you use the same objects over and over.
-Cons: You might end with a lot of unused objects making your downloads bigger and long loading times.
- When you need to update an object it will affect all maps with this object in a good or bad way.



Add folders to the resources.cfg file!
yes, that way you can organize your files in a much better way.
It's a bad idea to paste all your meshes and stuff in My_objects, the folder gets big and messy so easily. no to mention that accessing to that folder you have to click first, media, objects.
I personally add an extra folder for each map I make with the meshes in, so the resulting path is: c:\FeralHeart\map1\ and it's easy to access.


Got a supercomputer?
Think of those users like me that still using Windows XP with a dual core E-350 CPU
I have seen recently some maps that don't run nice even by using a gamming laptop, keep an eye on the map framerate, install Fraps or anything that can measure your framerate and try your best to keep it over 30FPS.


Optimize your framerate by shrinking textures!
Shrink your very big textures to a lower resolution, specially those textures that are absurdly big.
how much you have to shrinnk it?
Think of how close the players will see this object, then shrink your textures to a reasonable size.
For example, if you put a small chocolate in a table, that chocolate will cover a few pixels of your screen, let say, 20 pixels wide, So you should use a texture that's 32x32 or 16x16 pixels, and not 5000x5000 pixels
I seen this case in a official halloween map and by fixing only that texture the framerate improved from 15 FPS to 60 FPS!


Optimize your framerate, Always use textures that are 2^n!
It can be any width and height as long it's 2^n, where n= 1,2,3,4,5
you can use textures with the following sizes for width and lenght.
1,2,4,8,16,32,64,128,256,512,1024,2048,4096
For exmaple, the following textures sizes are correct:
32x32, 32x128, 128x128, 256x256, 512x512, 128x512, 512x128, 1024x256, etc.
if you use a texture with random size, let's say a texture of 1200x1050, this texture will scale in your computers memory to the next 2^n size, so it will be 2048x2048, so instead of using 3.78MB of memory, it will use 12.55MB, that's how much your computer has to handle several times per second!


Optimize your framerate by carefully selecting your collisions.
To get a good framerate you need to take care of your CPU and graphics card usage.
Collisions are very CPU heavy, avoid using a lot of meshes or heavy meshes with collisions.
It's always better to use collision boxes when ever you can.
Don't use collisions in objects that the player can't reach like trees in the background.
If you think a collision lags you in single player mode, the amount of lag gets worse for each player standing close to it
An easy way to know how laggy a mesh is, it's to check the file size of the mesh, bigger the file, laggier is the mesh.


Split your collisions meshes in parts!
Lets say, If you are making your own meshes and you have a very big den with mesh collision activated, it's more efficient to split your den in several mesh files each with a collision than using a single one, in many cases the framerate duplicates!


Avoid filenames with simple names that can easily collide with other file names!
This will save you problems of finding your map exported with the wrong mesh/texture.
A common problem is to find a mesh with name rock.mesh, there are many people who created different versions or rocks and have the same mesh name!
avoid names like rockTex7, bed, sofa, building, etc.
instead use more complex names like: tikos_house_empty.mesh, chance that someone else created a mesh with the same name are low.
Same goes for textures, materials, particles, maps, and anything the game loads.


Reduce your map loading times, Try to use Jpg, Png, or dds textures
using BMP or TGA can make very big files, only use them if you really need to.
JPG is good for most textures, photos and such, it has some little quality loss everytime you save a jpg file, so it's better only for the final version of your textures.
PNG is good for simple graphics with low amount of colours, but it can also be used for any texture or photo and doesn't have any quality loss when you save it.
DDS is a good file format too, the only inconvenience it's to be uncommon and unknown by many people.


Rotate your map objects with notepad for perfect angles
FH rotation system is awful if you want to make a perfect 90º rotation to an object, and can be very hard and tedious.
But notepad is our saver today. the trick it's to use this magic value to have a perfect 90º: 0.707107
First, add a few new objects and rotate them to the angle you want, doesn't have to be perfect, save your map.
Open your map ".cfg" file with notepad (no need to close FH for that), scroll down to the right objectgroup and find the last objects you added, or use the search box to find it by coordinates.
You will find your objects looks like this:

[DruidGrove/DruidJug]
1787.27 22 1220.2;1 1 1;0.627691 -0.00135 -0.778462 0
1787.27 22 1220.2;1 1 1;0.627691 0 0.778462 0
1873.48 0 1521.6;3 3 3;0.205093 0 0.978742 0
2491.95 4 1702;1 1 1;0.703458 0.0862158 -0.0866229 -0.700151
1993.58 5.2 1867.06;0.867 0.452 0.824;0.993961 0 0 -0.109734
1969.7 -0.151406 1799.32;5 2.205 1;0.711536 0 -0.70265 0
1951 15.5 2074;1 1 1;-0.012 0.00145 0.9812 -0.00154

first 3 numbers are the x,y,z coordinates, then the x,y,z scale, then the w,x,y,z rotation quaternion.
next step is to change the quaternion values to be either 0, 1, or 0.707107, what ever number is closer to the original and it will look like this:

[DruidGrove/DruidJug]
1787.27 22 1220.2;1 1 1;0.707107 0 -0.707107 0
1787.27 22 1220.2;1 1 1;0.707107 0 0.707107 0
1873.48 0 1521.6;3 3 3;0 0 1 0
2491.95 4 1702;1 1 1;0.707107 0 0 -0.707107
1993.58 5.2 1867.06;0.867 0.452 0.824;1 0 0 0
1969.7 -0.151406 1799.32;5 2.205 1;0.707107 0 -0.707107 0
1951 15.5 2074;1 1 1;0 0 1 0

Save your ".cfg" file and load your map again on FH, there is! a perfect 90º rotation.

here is some info about how quaternion rotation works:
http://wiki.ogre3d.org/Quaternion+and+Rotation+Primer

If you need a different exact angle you can find the magic numbers you need by using the following formula:

[w, x, y, z] = [cos(a/2), sin(a/2) * nx, sin(a/2)* ny, sin(a/2) * nz]
Where a is the angle of rotation and {nx,ny,nz} is the axis of rotation.

for example, a 60º rotation in Y would be:
[cos(60/2), sin(60/2) * 0, sin(60/2)* 1, sin(60/2) * 0]
Then
[cos(30), 0, sin(30), 0]
then
[0.866025, 0 , 0.5, 0]

your new quaternion rotation is:
0.866025 0 0.5 0

As easy like that... easy right?
Uhmm maybe not for everyone.



Download meshes carefully and cheking FH still working, specially when downloading particles, troubleshoting the game crashing can be a real pain.


Add some moving tree leaves, add some gentle good quality sound effects, and particles to add more life to your map, Use Ogre Particle Lab or similar to create your own particles.


When it comes to sound effects, Always use .wav format because with the wav format when the sound loops you don't get that horrible hiccup.
Note: wav format can make huge files, don't do long soundtracks in wav format.

For music, some types of mp3 encoding cause a loud unpleasant noise at the start/end of the track, try using constant bitrate mp3 files with legacy encoding to avoid this problem. (Pending to check which encoding is good)


Install a clean new copy of FH with everything unchanged to test your map and see if all works fine.


Use billboards and planes (also known as backdrops) for far backgrounds that the player cannot reach, specially if you have a very populated background.

Windows System Recovery / Restore points is your enemy
I heard so many cases of people who finish several maps, then for some destiny randomness their system fail and they use Windows system recovery to get their computers back working. All looks fine, windows is working again but then you find that your maps are gone.
What happened is that Windows believes that ".cfg" files are system files, and when you make a map the game saves your map in ".cfg" files. Then windows makes a backup or your old .cfg files everytime you save your map.
when you do the system recovery, windows restores/deletes those cfg files and goodbye maps.
keep your maps original files safe in a USB flash drive, upload them to the internet, in a external disk, or any other place. Backup all your days of effort.


Avoid creating a monotone boring map
Don't just take all trees and objects you got and spread them around the map, it will become a boring map. Once you see a corner of the map, you already saw all.
Instead, put something very unique on every part of the map.
A flower garden, a special house, a misterious object, food, animals, a fireplace, and any idea you can come with.
Add some fun to the map, a quest, parkour, sliders, a small laberynth.
Add a resting place on your map, somewhere where you have a nice view and you could spend hours staring at it. Has to be something that looks comfy to lay down your character, preferably a flat surface that looks soft.
There are already too much realistic and nature maps, why not try something different?
Easter eggs can be fun too!


Use the Ogre Manual to learn to edit material and particle scripts and get awesome effects.
Read the Ogre Material tutorial too!
Material scripts:
https://www.ogre3d.org/docs/manual17/manual_14.html#SEC23
particles:
https://www.ogre3d.org/docs/manual17/manual_34.html#SEC186
And also install Ogre Particle Lab
And have some nice material examples here:
http://wiki.ogre3d.org/Materials

Once you read those manuals, you could try using LOD in material scripts with the heavy ones, it will smooth your map a bit
But it's also useful to do some map effect tricks ;)

If you are texturing a big mesh let's say.. a long wall or a big den, use Alpha Splatting rather than using a very big texture.
http://wiki.ogre3d.org/Materials#Alpha_Splatting

For mesh makers, try using prebaked textures with lighting for indoors, it really does a change!.

This is all for now, thanks for reading and have a nice map making fun!
« Last Edit: December 07, 2018, 03:25:35 am by Tikoucas »

Offline Azurain

  • 🍃🍃🍃🍃🍃
  • Elder Grey Pelt
  • ****
  • Posts: 3,303
  • Country: us
  • Floof-O-Meter: 183
  • an actual forest gremlin
    • lark-bird
    • View Profile
Re: Advanced tips for map making
« Reply #1 on: December 06, 2018, 08:06:53 pm »
I'm pretty sure you're a lifesaver. This makes me want to explore mapmaking more. Thanks for making this as well!

Offline gh0ul

  • Pack & Pride Representative
  • ****
  • Posts: 1,390
  • Country: gr
  • Floof-O-Meter: 65
  • ~~Son Fett
    • View Profile
Re: Advanced tips for map making
« Reply #2 on: December 06, 2018, 08:27:42 pm »
Definitely gonna bookmark this  for later use :p

<3

Flurr

  • Guest
Re: Advanced tips for map making
« Reply #3 on: December 06, 2018, 08:57:22 pm »
Very nice tutorial you have here! Definitely gonna have to use this sometime, great work on this! I'm sure it will help many other fluffs too <3

Offline Valar.Morghulis

  • “Sometimes before we can usher in the new, the old must be put to rest.“
  • Community Champion
  • ****
  • Posts: 1,741
  • Country: 00
  • Floof-O-Meter: 115
  • The many-faced God.
    • View Profile
Re: Advanced tips for map making
« Reply #4 on: December 06, 2018, 08:59:01 pm »
This is a very detailed tutorial, I’ll definitely use it in the future. Thanks for putting it up!

https://linktr.ee/Obsxura
Profile by Cittrus-fruit | Signature by Mistrel-Fox

Offline Likuu

  • -- strawberry banana
  • Finest Floof
  • ***
  • Posts: 929
  • Country: us
  • Floof-O-Meter: 65
  • 𝑜𝓇𝒸𝒽𝒾𝒹
    • View Profile
Re: Advanced tips for map making
« Reply #5 on: December 06, 2018, 08:59:34 pm »
I always love reading over things like this so I'll definitely be sure to check back at this when I start workin' on this new map! Thanks for sharing this, definitely very useful from what I've read so far.
artwork by dehvina

Offline Bloo.

  • Space-Child ✌
  • Moderator
  • Elder Grey Pelt
  • *****
  • Posts: 2,657
  • Country: us
  • Floof-O-Meter: 191
  • nyoom
    • Bloopaloozer
    • Bloopalooza FH
    • aLittleProzium
    • Bloopalooza
    • View Profile
    • DeviantArt
Re: Advanced tips for map making
« Reply #6 on: December 06, 2018, 09:25:14 pm »
You've done it again!! Definitely bookmarking this, this looks real interesting and helpful, full of things I'd never even thought of. Really makes me want to pick up that Ogre manual and start experimenting ;3


You are amazing <3

Offline Notorious.

  • Cinnamon Roll
  • Pack & Pride Representative
  • ****
  • Posts: 1,328
  • Country: us
  • Floof-O-Meter: 56
  • Noto for short
    • View Profile
Re: Advanced tips for map making
« Reply #7 on: December 06, 2018, 09:32:10 pm »
Ahhh, many thanks for posting helpful tips like this! Gonna quietly snatch this up when I decide on making a map of some sort again, haha. I can see this being extremely useful to many users to want to experiment with their maps! <33
Avatar made by WHIT3FANG on dA

AlphaEclipse

  • Guest
Re: Advanced tips for map making
« Reply #8 on: December 10, 2018, 01:27:42 am »
I have been lurking on this post for a few days and I feel it is about time I actually comment. Although I am not a huge map-maker, I can honestly say this is possibly one of the most interesting and well-written tutorials I have seen on the forum. It is obvious you spent a fair amount of time discovering and attributing the technical aspects of maximizing file efficiency and Ogre scripting to Feralheart map-making. The inclusion of mathematical descriptions also are extremely useful to those wondering why the game works the way it does, and how the Ogre engine incorporates trigonomety and other simple equations to help Feralheart run.

I especially enjoy that you explained that shrinking textures is an important part of optimizing objects & maps. While as the higher resolution may be a better quality, constantly using large resolution textures for minor objects is simply not efficient. Maintaining an appropriate balance is key to helping at least alleviate lag issues for some folks. You should also bring up how high-poly meshes can also create lag issues—maybe also touch on the difference between of quad and tri meshes, and maybe even how to convert back and forth between them, as—from personal experience—I found this is another great way to help minimize lag issues when coverting/making one’s own custom objects for maps.

Although this may not be for the average Feralheart user, there will be people that find this a very inspiring read—just as I have.

Offline LordSuragaha

  • The Karen Slayer
  • Immortal Legend
  • *****
  • Posts: 11,027
  • Country: 00
  • Floof-O-Meter: 1052
    • View Profile
Re: Advanced tips for map making
« Reply #9 on: December 10, 2018, 02:28:06 am »
Really amazed that you took the time to write all this down because these are really helpful tips and it’s good to have them all in one place. I actually find some of these pretty good to note down for myself to remember in the future. Thank you so much for taking the time and effort to put this together so neatly and nicely! Very thorough <3