Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 10 Nov 2006
Offline Last Active Yesterday, 10:19 PM

#5185702 Tutorial Series

Posted by on 08 October 2014 - 02:18 AM

I might be wrong here, but I think the majority of people in the gamedev forums are mainly programmers, so the very, very, VERY basics might be a good theme to cover tongue.png.

I support this approach. smile.png


As coder I think that there's a gap between common programmer art and professional art, which I would like to see filled. There are other communities which have a strong art focus and already cover most common styles (eg. retro pixel art, professional 3d art etc.) and I too think, that gamedev community have a lot more coders on board than artists. I would like a simple approaches to get some decent art on my screen and not some hi-end art tutorials which requires several years of dedication in the art department or some of the expensive tools (maya,max,photoshop).


So I vote for advanced programmer art wub.png

#5185687 3D Modeling Help

Posted by on 07 October 2014 - 11:44 PM

My question would be would it be better to model the armor separate from the body model? Or should I model the armor off of the body? Thanks for the help in advance.

Both is possible and both has advantages/disadvantages.

Here are some hints:

1. Modelling the armor separatly is often more easily modelled.

2. Modelling the armor as part of the body is often much easier to animate (especially if you use blenders auto-weight function).

3. Making exchangeable armor is really hard, unique and needs a good engine-support concept.

4. Small, simple,not flexible armor could often be bound to a single bone (eg. helm), therefor can be easily animated.


If you seek an easy start I would sugguest the following:

1. Always keep animation in mind, nothing is more frustrating to model a super complex object just to encounter terrible artifacts during animation.

2. Use body attached models where the armor is tightly linked to large parts of the body, eg. chest-armor.

3. Use separate models for small armor pieces, which can be easily associated with a single bone.

4. As beginner, avoid exchangeable armor , it is really advanced stuff. Instead use multiple models (changing the whole armor set).

#5185251 I got fired from my group

Posted by on 06 October 2014 - 05:35 AM

It is hard to rate your personal situation in this case.


Try to review your own action and behavior and try to avoid just blaming others. We learn by failure and therefor try to learn from this personal situation. Working in a team, especially if you are in conflict with an other person, is often hard for you, the other person and the whole team. You should focus on the latter one. What would help the team more, to engage the other person and putting more fuel into the fire, or to take a step back and try to increase the team comfort level ?. Eventually try to talk with the other person if you detect a conflict, best in combination with a neutral moderator if you both aren't able to settle the conflict.


Eventually this is just one of many life challenges, learn from the experience and look forward smile.png

#5184486 FBX load model cube.

Posted by on 01 October 2014 - 11:11 PM

Need help on coursework.





The documentation is too complicated examples - I won't be able to quickly understand.

Your colleagues will have the same complicated examples and the same base of understanding...so, lets play fair.

#5184482 Balance (early game difficulty) [strategy]

Posted by on 01 October 2014 - 10:57 PM

So many possibilities smile.png


Here are some thoughts


1. Factions have interests and the player get only in focus once he surpass the threshold of an according interest. Eg one faction wants peace and feels threatened once the player surpass certain military power. One faction want to keep to themself and feels threatened once the player colonize close to their home planet. Other factions keep passive as long as you dont attack them directly or an ally. And eventually there are aggressive factions which will raid/conquere your planets once they have a certain value.


2. The player have the option to choose from multiple starting points. The neighborhood will define some kind of danger-level, like the placement of the settlement in dwarf fortress.


3. Use diplomacy to form alliances with different factions. One faction could start to support you with cash/equipment/resources once you start war vs one of its enemies. You could pay some tribute to keep peace with an other faction etc.

#5184222 Threading question

Posted by on 30 September 2014 - 10:54 PM

It feels like having to grab a mutex every time I want to modify some data will quickly turn my multi-threaded game engine into an effectively single-threaded one, as all other threads will be blocked.

Yep, therefor you should avoid this as much as possible. This is somewhat special about game-development, sometimes an application developer will rejoice when a process finishes after just below 200ms, whereas a game developer will break down once a process needs more then 2ms. And synchronisation is one of the fastes ways to surpass the 2ms wink.png



This works fine if there aren't many objects to draw, but if I understand this correctly, some synchronisation problems could occur if the rendering frame rate ever drops to the rate of game loop updates.

How do you balance the need for thread-safety

You dont need to balance thread-safety, because your code must be thread-safe period. It is just the matter how hard it is to ensure thread-safety. If you use mutex/semaphores/critical sections etc. it is quite easy, but potentially slow. If you use lock-less sync by contract, you are at a much higher risk of including bugs, but it is much faster.


On the other hand, maximum CPU usage is not always needed, and modern, powerful CPUs remove the burden of hobby/indie developer of squezzing out the last drop of performance. So, as long as you don't try to invent the next block-buster AAA engine, I would sugguest to use a good mix of manageable code and block-less concurrrency behavior, which feels comfortable. Just remember, the best, fastest code is worth nothing, if you can't handle it over a long period.

#5184033 Strange GLSL Behavior (Debug vs Release)

Posted by on 30 September 2014 - 05:29 AM

everytime upon launching the program in Debug mode only works about 1 / 3 of the time when I'm trying to launch the Release mode version of the program.

This is often a result of not properly initialised variables. In debugmode, every variable will be initialised with atleast some debug information whereas in release mode, for the sack of performance, only variable which you have initialised in your code get proper values, everything else contains some random, not defined data.


This has nothing do to with the glsl shader, more likely the initialisation of the shader, setting of uniforms etc. will use some uninitialised variables.

#5184010 Threading question

Posted by on 30 September 2014 - 02:32 AM

Why is this working fine?

This way of handling threading is dangerous. It will work most of the time, but sometimes something unexpected occurres. The real difficulty is to analyse the unexpected bug.




Is it safe for me to continue doing this?

Yes,no, maybe...


In other words, there is only a small time window when one thread writes data and one thread read this data. An unexpected bug occurred whenever these two windows overlaps, which might happen really seldomly.


There are some ways to ease this kind of stuff.


1. Using system synchronisation: This is often the worst case to handle multithreading in games. Whenever you use or read shared data, you ensure that your thread is the only one who read/manipulate the data by using some kind of system supported syncronisation (mutex,semaphore etc.). The issue is, that your other threads will get blocked for some time (=wasted time).


2. Atomic operations: This is pretty cool. Atomic operations ensure that there's no real blocking of threads. Check CAS operations, these are really useful for lockless lists/queues .


3. Synchronisation by contract (no official term): This is more like what you have done. You ensure, that if multiple threads read only from a shared data, that no other thread will manipulate it concurrently and if one thread manipulates shared data, no other thread read from or write to it. This in combination of a few sync points (see 1. and 2.) will ensure that your threads can work concurrently most of the time without utilising explicit sync mechanism.


One example:

10 threads animate the skeletons of a pool of entities (pulled from a list by using atomic CAS), writing the animation data to buffer B.

while 1 thread renders all animated entities from data buffer A.

After all threads has finished, swap data buffer A and B (synchroinsation point).


In this example, you use double buffering, some CAS operation and a short synchronisation phase at the end.

#5183669 Hand painted textures **UPDATED**

Posted by on 29 September 2014 - 12:51 AM

Wow, great improvement. Good work.smile.png


To improve further test out the following:

1. Wood:

The spirals in the wood, as element of stylization, is good. But the notches/cuts along the wood structure are too regulary. You should use cuts and other outstanding details with care to break up an otherwise monotom surface. One or two larger cuts would be better.


2. Metal bands:

You already have a pretty good color/value variance in your wood texture. The metal texture is lacking this variance. The surface looks too flat, the details too obviously. Use rustt and some wear. Metal as material lives not much from color , but from reflection (it is important to note, that the metal will filter the color of the reflected world, eg. silver will most likly be like a mirror, whereas gold will tint the reflection in yellow) . So imagine the impression of a reflected world in your metal bands. Eg. a bluish color is always associated with the reflection of the sky which will give you a metalish look even if the sky is not visible in the scene. The roughness of a metal will define how clear a reflection is visible. A polished chrome,silver,gold surface will be like a mirror, whereas a rough, dirty iron surface will reflect the surrounding in a vague manner.


3. Overall:

Use details more sparsly, try to get the material down first and use color/value variance to break up a surface (avoid flat look). Use details to set highlights and to break up monotom surfaces.

#5183062 problem with my text rendering

Posted by on 25 September 2014 - 10:38 PM

Looks like a fitlering problem, check the following:

1. pixel exact rendering

2. no linear filtering

3. no mipmapping (eg auto-generated rendering)

4. no compression

#5182582 matrix/coordinates?

Posted by on 23 September 2014 - 11:39 PM

I don't understand some of the setup stuff, it's mostly pieced together code from other examples until I found something that worked somewhat.

Stop here, delete your project, look for tutorials and start over again. This time concentrate on understanding the stuff you are using and why it does/doesn't works this way. tongue.png


It is the most safe and eventually quickest way to get into something new. Building your project on something which magically works sometimes, without knowing why it works at all huh.png .. will often end at the point , where you can't figure out a show-stopper (a bug, which ruins your whole project).


My first really big project ended this way, it was a pretty cool learning experience, still it hurts a lot if you consider the progress made sad.png .

#5182575 Help in modeling ramps and curves!

Posted by on 23 September 2014 - 10:54 PM

I can't tell you the way to approach this in max, but in blender I would do it this way:

1. create a cylinder

2. half it (throw other half away)

3. extrude surface to apply a thickness

4. build a simple cage (subdivided cube,rect).

5. use the lattice modifier to form the curves.


I think, that max will have similar tools/modifiers. Best to google for an useful mapping.

#5182040 Hand painted textures **UPDATED**

Posted by on 22 September 2014 - 01:04 AM

It is a start. Some thoughts.


1. Ignore normal maps for now. Normal maps only works with technical lights (ingame engine), whereas handpainted textures is the art of applying light and shadows directly on your texture. As you see, it is conflictive and therefor not really easy to pull off.


2. Your texture will benefit more from material maps than from normal maps (eg make the dark crevices between the boards non reflective and the wood a little bit reflective, will have an more important impact in game rendering then to apply normal maps).


3. If you apply stylization (stylized spiral in wood structure), then you should be consistent. The wood boards are just too clean and plain. Make them more rough.


4. Less is more, dont add too much detail. More variance in the color and overall look will be more helpful.


Hereare some wood texture tutorials.


Nevertheless, your texture reminds me of my first wood-barrel attempts. Just keep practising and you will be suprised of how much your skills will improve.

#5182035 world maps

Posted by on 22 September 2014 - 12:26 AM

It is hard to answer, but I got two favorites: Elder Scrolls II: Daggerfalland Bard's Tale I . If you take a look at the games you will wonder why not oblivion or skyrim. The reason is the following:

Bard's Tale I had a mini world map, just a single town with only a few usable buildings, and every single usable building had some use. Daggerfall on the other hand had a large, procedurally generated world which delivers a generic, still living world.


When I play a RPG, I dont need all this story threads, and mindless talking about the common gossip. Modern games try to go into great details, but on the other hand they need to reduce the overall scale so much, that it is often cluttered with non-functional blah-blah and really small scale on the other hand. The result is often that you encounter villages with 5-10 villager, a dark castle, which is just 20 meter down the street, goblin hords consisting of 4 goblins and dungeons which are as small as your common medieval cellar.


Eventually, in my opionion, a world should be large  and a game should be functional and consistent. I don't need a detailed, unbelieveable world simulation, when it comes at the costs of really small scale.

#5181221 Walking through the debugging process

Posted by on 18 September 2014 - 03:32 AM

Try something like this:

            for (int t = items.Count() - 1; t >= 0; t--)
                if (player.rectangle.Intersects(items[t].ItemRectangle))
                    int bestSlot = -1;
                    for (int i = 0; i < player.PlayerInventory.itemSlots.Count(); i++)
                        if (player.PlayerInventory.itemSlots[i].IsSlotOpen == true)
                            if(bestSlot<0) {
                               bestSlot = i;
                        else if (player.PlayerInventory.itemSlots[i].IsSlotOpen == false)
                            if( (player.PlayerInventory.itemSlots[i].item is Twig && items[t] is Twig) ||
                                (player.PlayerInventory.itemSlots[i].item is Rock && items[t] is Rock)) {
                                bestSlot = i;

                   // add now
                   if(bestSlot>=0) {
                      if(player.PlayerInventory.itemSlots[bestSlot].IsSlotOpen == true) {
                            player.PlayerInventory.itemSlots[bestSlot].item = items[t];
                            player.PlayerInventory.itemSlots[bestSlot].IsSlotOpen = false;
                      } else {
                            player.PlayerInventory.itemSlots[bestSlot].item.NumberOfItems += 1;
                     items[t].ItemPickedUp = true;