Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 10 Nov 2006
Offline Last Active Today, 12:40 AM

#5273822 Low Poly vs. High Poly

Posted by Ashaman73 on 02 February 2016 - 03:39 AM

You need to differ between a hi-poly ZBrush model and an higher poly in-game model. Right, if you want to add baked details, you should go for ZBrush, sculp them in and bake them to a texture. But if you need more polys for the ingame model, you need to remake your current model. Ask your employer what he is missing. Is it the silhouette of the model which is too rough, then you need to remodel your model most likely. Does he want more details, e.g. single fingers should be animated separately ? Or does he want more surface details, then you should go for the zbrush/bake approach.

#5273140 GLSL ES shader based camera question

Posted by Ashaman73 on 29 January 2016 - 02:46 AM

Trying this: gl_Position = identity * world * vec4(in_Position,1);

#5273133 AEcology: Upcoming AI generation library

Posted by Ashaman73 on 29 January 2016 - 01:31 AM

Game development is partly like movie making. You have a director (designer), you have scenes and a script (desired behavior) and you have actors (AI entities) and most of the time the actors need to performe in the boundaries of the given script and what the director want to see. The actor (AI implementation) will eventually decide about the quality of the performance, but at the end it is all fake.

You commonly can't take non-actors, put them into a scene, give them a rough briefing and tell your director, that they will learn to handle it eventually. This will not work for 99% of all movies.

My excursion with ML in my game was very frustrating, thought it sounds like a valid candidate for ML. Eventually Marks words hit the nail on the head:
1. Seeing unexpected behavior resulted in hours and days of analysing data (oh.. it is not a bug, it was a logical consequence).
2. Player didn't see any intelligent behavior at all, just stupid decisions perceived as bugs.
3. Modfiying this behaviour to meet your 'script' (expected behavior) resulted in special cases, additional parameters, more tweaking.

Eventually it was a maintainance hell with behavior which was perceived as buggy and bad.

#5272951 Recommendations for a Text Editor

Posted by Ashaman73 on 28 January 2016 - 12:12 AM

I use https://notepad-plus-plus.org/ for all editing not done in VS. Similar to ultra edit, lot of plugins, easy, fast, free.

#5272100 How to calculate the difference between 2 quaternions?

Posted by Ashaman73 on 21 January 2016 - 12:12 AM

>Then I don't have access to the offset matrix. I wonder why the offset matrix should be placed in
>the frame data structure instead?

Skeletal animation works on bone basis, that is, the mesh must be in bone space. E.g. if you want to animate an eye with a eye bone, the eye center must be at position 0,0,0 in the space of the eye-bone. When you look at the mesh, the eyes are most likely far away from the center position, therefor the offset matrix moves the eye from its original position in the mesh (mesh/model space) to 0,0,0 (bone space).

Now you could use this to animate two different mesh with the same animation data, even if the eyes of each mesh are at different position due to each mesh having its own offset matrix for the eye. The offset matrix ensures, that the mesh parts are at the right position, so that the animation data can be used independently of the mesh.

Thought, in general different meshes will have different bone structures and animation data, but this is the basic idea why the offset matrix is part of the mesh instead of the animation data.

#5271955 How to calculate the difference between 2 quaternions?

Posted by Ashaman73 on 19 January 2016 - 11:39 PM

You want: q2 = q1 * delta_q
delta_q = inverse(q1)*q2
<=> (assumption you have only unit quaternions)
delta_q = conjugation(q1)*q2

That's it, create the conjuagation and multiply it with the other quaterion to get the difference. From the difference you can extract the angle and rotation vector if needed.

#5271218 So difficult to find 3d artists!

Posted by Ashaman73 on 15 January 2016 - 12:33 AM

It is a matter of confidence.

If you look at art, you can rate the quality quickly and you have more confidence, that the artist is able to provide what is needed for your project. On the other hand, just by looking at code or a program, it is extremly hard to rate the quality of the work.

Is the coder able to finish the project ? Is he able to master technically issues ?

Being a 3d artist of certain quality requires years of work and dedication and a 3d artist will have good chances to get a paid job, whereas contributing to project for profit sharing is not really as attractive (and bears much more risk).

On the other hand, getting a small, but impressiv, demo running is not really hard for a skilled coder, but finishing a whole game project is an other matter.

#5271008 SRPG TRPG AI techniques

Posted by Ashaman73 on 13 January 2016 - 11:37 PM

There's always a standard set of AI techniques which is used in almost every game:

1. Pathfinding (what is reachable, how to get quickly to goal area etc.)
2. Decision making (what is the best to do now ? )
3. Action execution (how to perform a certain action?)

Common implementation for these areas are
1. A* based on either waypoints or navigation meshes
2. From simple scripting over to behavior trees.
3. Motion controlling, animation synchronisation, sound synchronisation, steering behavior.

For a round based, grid based game I would recommend to look into
1. A* + waypoints (=grid cells).
2. Behavior trees
3. animation synchronisation/scripting

good luck :D

#5258468 When you Fix your timestep Do you need to change the physics

Posted by Ashaman73 on 22 October 2015 - 12:35 AM

My question is when using a fixed time step can that timedelta be removed from the calculations.

That would make the forces larger and out of the fractions.

No. A fix timestep is just a fix delta time, nothing more. Basically you have:

currentTime = getTime();
lastUpdateTime = ...
timeStep = 20;//in MS

while(lastUpdateTime<currentTime) {

Physics will often jitter due to different number of steps per frame. Best to counter this by implement a kind of movement smoothing of the rendered object, not the physics object.

#5258039 Tessellation and Bullet Decals

Posted by Ashaman73 on 19 October 2015 - 10:19 PM

Any ideas?

What rendering technique are you using ? If you use a deferred shading technique, then it doesn't matter how you build the g-buffer. Eventually you can project the decals into the g-buffer.

#5255079 Article on Voice Over

Posted by Ashaman73 on 01 October 2015 - 11:55 PM

What game genres benefits most of voice over ?

How to avoid ruining a game experience with weak voice over ?

At what stage in your development process (early,mid,late, polishing,after release, beta?) do you add voice over to satisfy player expenctation while reducing cost explosion ?

How to you manage localization ?

What do you do when a certain voice over talent is not available in your price range, leaving your game with incomplete voice over otherwise ?

What part of your game should be covered by voice over (tutorial,messages,guides,NPC) ?

How much time do you need to manage voice over ?

What are additional development steps necessary to integrate voice over (e.g. lip-sync) ?

#5255077 Article on Voice Over

Posted by Ashaman73 on 01 October 2015 - 10:24 PM

What is your target audience of this article ?

I can't see any benefits for a developer below AAA-indie level due to the height costs of voice over (talent+studio+frequently changing design common in the lower dev levels) and the top or flop nature of voice over.

#5254539 How to manage multiple enemies/mobs in open world RPG

Posted by Ashaman73 on 28 September 2015 - 10:24 PM

The problem is, imagine i have +3000 enemies in my map, how can i manage to execute their IA Behavior, and test who the player attacked, etc.

Here are some tips with pseudo code:

1. Have a next update/next ai time like this:

   // do something with obj

   if(is_player_around==true) {
     // hi-frequent update time
     obj.next_ai_updattime = current_time + 100;
   } else {
     // low-frequent update time
     obj.next_ai_updattime = current_time + 3000;

for each obj in my_game_objects do
   if(obj.next_ai_updatetime<current_time) {

2. use timed events, e.g. like this

   obj.next_event_time = min(event.execute_at,obj.next_event_time);
  min_event_time = MAX;
  for each event in obj.event_list do
     if(event.execute_at<current_time) {
     } else {
        min_event_time = min(min_event_time,event.execute_at);
  obj.next_event_time = min_event_time;


main loop:
for each obj in my_game_objs do
   if(obj.next_event_time<current_time) {


3. for objects, which needs to be updated really seldomly, e.g. a pusling shrine which is active for only a few seconds after being triggered, use the event system instead of the update system like this:

pulsing_shrine_triggered_update(obj) = 

   // do something, e.g. heal nearby creatures

   // done ?
   if(!done) {
     // trigger again in 1 second

4. if you use the tips from above, replicate the times in an array for faster memory access,because you really need to test only the timestamps most of the time. No need to access large objects all the time. Thought the performance benefit might be small to tiny ;-)

#5253946 Is there a market for 2d/ low end 3d games?

Posted by Ashaman73 on 24 September 2015 - 10:40 PM

Yes, there is. Many successful indie  games were made within a "week" (aka short duration). When you are able to sell a few hundred copies of a game you made within a week you could make a profit. Sure, good looking, top game will sell more, but they cost millions of $. 


Thought low-end is != ugly art, remember this. The 100th clone of a platformer with not appealing art will have a much harder time than a clever idea with low/abstract art.

#5253761 Voxel terrain smoothing

Posted by Ashaman73 on 23 September 2015 - 10:19 PM

It is unclear if you want to smooth the terrain or the voxel presentation of the terrain.

For smoothing terrain look up gaussian blur. For smoothing voxels look up marching cubes.




I've looked a lot at this article:


The terrain is too rough though,

If this is too rought, then you have some really demanding goals. Voxel worlds are notoriously memory hungry. For more memory efficient implementation look up sparse voxel/octtrees.