351

(4 replies, posted in Editor)

try this blender exporter update : http://www.maratis3d.org/download/blend … 66(v2).zip

someone noticed a code issue and published it in the bug tracker.

352

(56 replies, posted in Editor)

hi, yes, we can make the assumption that sse2 is now on a majority.
thanks,

353

(56 replies, posted in Editor)

Hi,

I added a cast for the freeimage loader error in case : https://code.google.com/p/maratis/sourc … Loader.cpp

it's better to keep the warning level high during experimental development, casting warning are usually useless but they can sometime reveal an error or give a clue for a bug.

tell me if the fix removed the error

354

(11 replies, posted in Gossip)

it's interesting, there is a lot of possibilities with games and interactive applications, it's still a new medium/art? so unfortunately the majority of games take the easy path of violence and action because the mechanic is well known. But it's not the only game mechanic, and there is also story telling, puzzle, eduction etc.

One thing I miss a lot now is the good and slow adventure game, and it's one of the reason I don't play really video-game anymore (I'm older, age, work and free time are also a factor). They mainly tell a story, there is rarely any action, and you can play at you own rhythm, no time check, mostly no game over. I really liked these games, Monkey Island, Game of the tentacle, Riven...

At least the old school style is coming back with this modular design you talk about, minecraft seems one (I never played).
But a game where you make game can be tricky, it needs very smart constraints to focus the liberty.

Yes, in this case you will need to destroy or at least deactivate the physics object manually just before :

MPhysicsProperties * phyProps = plane->getPhysicsProperties();
if(phyProps)
    physics->deactivateObject(phyProps->getCollisionObjectId());

356

(4 replies, posted in General)

do you have the same problem if you use a sphere shape for the character ?

also, check that your map doesn't have faces in double or unconnected edges.

shapes and objects are automatically deleted by the physics context clear() function
MBulletContext::clear(void)

clear is called by MBulletContext::init, itself called by MScene::preparePhysics

358

(5 replies, posted in General)

I wish I was smile

359

(5 replies, posted in General)

: )

in fact there is no special meaning, except the story of it :

I was still a student, 10 years ago, some friends wanted me to try role playing game with them, it was not really my thing,
but I started searching a name for a character, without success, I go to sleep frustrated and later in the middle of the night I woke up with a name in loop in my head, impossible to sleep, so I write it on a piece of paper.
In the morning I read : "Galogan Maratis".

I didn't like role playing game, but I liked "Maratis" so I named my in-progress 3d engine like that, I don't know why my brain picked this name.

360

(2 replies, posted in General)

the physics is runned by MGame::update :
https://code.google.com/p/maratis/sourc … /MGame.cpp

you can create your custom MGame class and change the update function to run "scene->updatePhysics();" with a condition condition.

361

(8 replies, posted in General)

you need to recompute the bounding box
if it's just a translation of vertices, translate the bounding box too.

beautiful !

363

(56 replies, posted in Editor)

255 : there is object->deleteMe()
object can be a button, image etc
and is really deleted by MWindow's update so it's thread safe.

364

(36 replies, posted in General)

this can be because bones can be oriented in various direction,
blender normally export bones that are Y aligned (meaning the bone length will be locally parallel to Y),
other softwares can align bones on different axis.

If you exported from Blender try to use a box as object and scale it longer on Y to make a stick and see if it synchronize with the bone.

Because normally the code is good.

did you run multiple instances of Maratis at the same time by any chance ?
or was the system lagging or something when the bug occurred ?

366

(36 replies, posted in General)

It will be again a matrix operation, by head I'll say :

// calculate object matrix in boneEntity's space coordinate : "object" is the object to copy transformation from
MMatrix myMatrix = boneEntity->getMatrix()->getInverse() * (*object->getMatrix());

// if "bone" is linked to another bone
MObject3d * parentBone = bone->getParent();
if(parentBone)
{
    // calculate object matrix in parentBone's space coordinate
    myMatrix = parentBone->getMatrix()->getInverse() * myMatrix;
}

// get position and rotation coords from myMatrix
bone->setPosition(myMatrix.getTranslationPart());
bone->setEulerRotation(myMatrix.getEulerAngles());

ps : getInverse() returns the inverse matrix of a matrix
(to be tested)

367

(9 replies, posted in Engine)

Thanks zester,
I'm not convince yet to replace the external libs by Poco but :

I will totally appreciate your help to test and clean the experimental premake build system for Windows :
- correct/clean the premake files if needed
- make sure premake for windows can generate a working visual studio project
- make sure it also works with MinGW (gcc compiler for windows)

My main system is Macosx so I can test and compile for this platform.

Finally we will need a linux contributor, is someone interested ?
- be sure premake generate a good makefile
- test the compatibility of the binary on some common linux distributions

Current state of the test : http://forum.maratis3d.com/viewtopic.php?pid=5339#p5339

368

(56 replies, posted in Editor)

good com3D, if you don't see a text in the window is maybe because there is no font,
open main.cpp and change the path of the font "/Library/Fonts/Arial.ttf" for one on your system.

tell me if it works after.

normally you don't need to be administrator,
but I'm not sure how the permissions works in all cases,
Maratis asks windows for a temporary directory and create a temp file there that is used to reload the level.

Can you check if you see a level in C:\users\username\AppData\Local\Temp, where username is your user account name ?
Check just after you started the game because the temp level is then deleted when you go back to editor.

(The dir could be something different than AppData\Local\Temp thought)

370

(9 replies, posted in Engine)

good to know, thanks,
I'll study that.

What platform are you in ? are you using a custom game plugin ?

The first possibility is that Maratis is not able to save a temporary level when you press play,
but I'm surprised that it's variant, it could be a authorization problem or so.

Second possibility, if you are using a custom plugin, is that you have a behavior that run during editor mode,
if it is the case, ensure the behavior call this on top of update :

MGame * game = engine->getGame();

// check if the game is running, removing this test will enable In-Editor update (like for the lookAt behavior)
if(! game->isRunning())
    return;

372

(40 replies, posted in Engine)

oups, ok smile I just realized that I gave you a wrong code previously to send events to MWindow :

to send the mouse move event was not "window->onMove(mx, my);" but "window->onMouseMove(MVector2(mx, my));"

sorry, my mistake... I didn't understand why you was talking about a bug in onMove...

I corrected it there : http://forum.maratis3d.com/viewtopic.php?pid=5155#p5155

373

(40 replies, posted in Engine)

no it's not a bug, onMove refers to the window moving, MWindow can optionally be an a os window and be moved.

yes Tutorial Doctor, follow the tutorial and save the normal map as a jpg or png texture and then import it int the third texture slot "Normal" :

http://www.maratis3d.com/wp-content/uploads/2011/01/07.jpg

You will also need to switch on the normal option in the texture "image sampling" properties :

http://www.maratis3d.com/wp-content/uploads/2011/01/08.jpg

ps : normal map doesn't support mirrored uv mapping.

Bump mapping and normal mapping are from the same family, bump maps are more user-friendly and normal maps are more precise and direct.

What happen is, in a render engine, a bump map is internally converted into a sort of normal map.
We use normal map directly in real time 3d because this "conversion" can be preprocessed and because normal maps allow baking the normals of a hi-res mesh into a low res mesh with precision.