426

(8 replies, posted in Scripting)

about gui >
there is also a script method to draw another scene on top of a camera (like GUI Demo) : http://wiki.maratis3d.org/index.php?tit … ameraLayer

427

(16 replies, posted in Showcase)

Argoon I like how you managed to build the ambiance,
I'm curious to follow your work.

428

(17 replies, posted in Showcase)

nice project,
how do you plan to interface a chess engine in c++ ?
using behaviors ?

heartseed :
there is no real limitation, it's more a strategy/performance thing.
Some games will be faster by separating mesh in smaller parts, other games by grouping meshs in bigger parts.

In the engine, an entity (MOentity) is linked to a mesh (MMesh), and a mesh can have multiple sub-meshs (the mesh is internally split), so a set with multiple rooms could be a single entity, and be fast if the mesh is split in multiple sub-meshs (for exemple one sub-mesh for each room), you will just not be able to move each part separately in the editor.

From the point of vue of the user inside the editor, loading a mesh file (*.mesh) creates an entity that links to this mesh file, and every entity using the same mesh will link to the same mesh in memory (it's an instance).

In general you should separate the static things (rooms, table, chair...) and the dynamic things (characters, animated objects...) and not have too large entities.

430

(36 replies, posted in Scripting)

yes, sorry it's "relative"

marval :
the file > import command convert the collada mesh as-it and save it as Maratis mesh in your-project/meshs/.

There is no tools yet to edit the animation inside Maratis, so you need to open the maratis mesh file (*.mesh) and modify the animation table using a text editor (it's XML).

Look at Jules.mesh in the exemples to see how multi-animation are written.

432

(8 replies, posted in Engine)

Hi tutorial doctor,

there is different schools about learning, I learned by myself mainly because I was passionate about making an adventure game when I was 16. The first thing I played with was basic on Amstrad CPC some years before, I also liked to draw. Later I discovered a software called "Clic and Play" on PC to make small games without coding. After some time only I started learning C and made a small 3d engine for ms-dos. I learned a lot by looking at code from a library called Allegro, and by trial and error.

You don't specially need to know complex syntax and hardware code to make games or softwares today, but what you definitevely need to master is logic. I'm not a hard core programmer, there is a lot of concepts I don't know and I never touched assembly.

In 3d, you need some math basics, specially vectors, with your best friends (dot product, sqrt, cross product...). Alkso learn how to use matrices and what they do (even if you don't know how it works inside).

The way I work is to think about what I want to do on paper, the structure, the logic, before switching on any computer.

I do some research to find good libraries to not write something already existing, then I focus on the general design, trying to keep things as simple as possible. I optimize only the parts that needs it, by anticipation or after profiling.

After, it's passion, curiosity,
and of course time.

(to give you an idea, Maratis it's 10 years of work plus now all the contributors time)

Hi,
maybe a visual sheme ?
or a general review focused on game development,
describing all important steps :
- inputs (events, keys...)
- logic (script loop, physics, behaviors, transformations...)
- drawing (culling, sorting, rendering...)

By the way,
I wanted to thank you for the work you already made in the wiki,
it's really helpful and motivating, thanks !

434

(2 replies, posted in Scripting)

did you look at this exemple in the wiki ?
http://wiki.maratis3d.org/index.php?tit … ng_example

I made it to show how to create a class-like object.

435

(6 replies, posted in Scripting)

yes animation blending is not supported yet,
it is feasible in c++ plugin by dynamically creating 2 key frames in a temp animation,
but a bit complex.

It's still in the TODO list.

436

(36 replies, posted in Scripting)

Argoon :
for global sounds, you can use a stereo sound (only mono sounds are 3d)
or select the "local" option in the sound property and the sound position will be local to the camera (the global effect you want) > set the position to "0 0 0" for a centered sound

437

(4 replies, posted in Tutorials/Examples)

mh, it doesn't seem supported by default,
maybe using an extension but I'm unsure.

438

(20 replies, posted in General)

We all agree that Maratis needs more documentation,
the question is, how can we do it and what do we do first.

We cannot follow the direction of unity or udk because it's impossible, and it's not the point,
they are financed by millions of dollars every years.

We need to go step by step with a priority for the most important features,
and it can only happen with the effort of multiple people, it's not a little task.

255 just added pages of documentation in the c++ part, when I have some time I do it too,
others do, that's the way, it will take time and contributors, that's all.

439

(20 replies, posted in General)

That's good to see some discussion on this here,
it's not always easy to anticipate needs on usability and documentation, specially with few resources.

I'll give you some of my taught, but my view can be biased because I'm not a user as you are.

About C++ API :
A simple and clear source code can be better than a complex API documentation, like you said 255,
and I believe the API structure is clear.

What is needed in my opinion is a user documentation giving a GLOBAL VIEW of the engine SDK,
it could be provided by schemes, examples and specific areas documentation.
First probably with a focus on the most used parts like :
- handling scene data (cameras, lights, entities, physics)
- moving objects and entities properties
- the mesh structure
- game class and behaviors

Is a class by class doc of the engine more appropriate I don't think so, but maybe you think I'm wrong.
The other thing to take in account is that a complete class documentation can be very time consuming to write.

440

(20 replies, posted in General)

aout m_type in material :

it's an optional variable from the mesh format,
right now it's not used, a material is "standard" by default and "custom" is there is a shader attached (FX).

It cannot be made enum because it's use is not defined,
for example it could be useful if you write a custom renderer where you want different types of materials that are not controlled by shaders.

441

(7 replies, posted in General)

I understand but we are not going to multiply bug trackers.

442

(4 replies, posted in General)

Normally you can access like that :

sce = bpy.context.scene
mar_anim_list = sce.mar_anim_list

num_anims = len(mar_anim_list)

for i in range(num_anims):
    start = mar_anim_list[i].my_item.start
    end = mar_anim_list[i].my_item.end
    loops = mar_anim_list[i].my_item.loops

and to add a new animation :

mar_anim_list.add()
mar_anim_list[-1].name = "Anim%d" % (len(mar_anim_list) - 1)
mar_anim_list[-1].my_item.start = start
mar_anim_list[-1].my_item.end = end
...

443

(7 replies, posted in General)

it need to be added in the engine,
you can create the feature request on google code issue manager

444

(4 replies, posted in General)

can you explain more ? when you say exporter tab what do you mean ?

445

(36 replies, posted in General)

About math and matrices :
- http://www.gamedev.net/page/resources/_ … ices-r3097
- http://www.gamedev.net/page/resources/_ … ified-r695

446

(36 replies, posted in General)

To be be tested but you could do that (after parenting is computed) :

MObject3d * parentBone = bone->getParent();
MVector3 P_entity = entity->getInversePosition(P); // entity space

if(parentBone)
{
    MVector3 P_parent = parentBone->getInversePosition(P_entity); // bone parent space
    bone->setPosition(P_parent);
}
else
{
     bone->setPosition(P_entity); // no parent so the bone is in entity space
}

[EDIT : modified "MObject3d * parentBone"]

when you publish your project using "File > publish project"
all the game data are packed into a npk file so your data are first hidden by that,
and additionally all the meshs (.mesh or collada or blend or anything) are converted in maratis binary mesh format
to make the loading faster.

With a bit of code it's even possible to encrypt the npk package.

448

(2 replies, posted in Scripting)

setAnimationSpeed controls at what speed the animation is played,
so if you use setCurrentFrame to manually set the frame of the animation
the animation speed is useless (you don't want the animation to be played as you control it yourself).

449

(1 replies, posted in Scripting)

cool, thank you !
in case you want to show a video there is this : https://vimeo.com/20404105

450

(2 replies, posted in General)

Hi,

there was a similar attempt some time ago by the community,
maybe it's time to wake it up ? You should definitively try to contact :

AquaGate :
forum discussion http://forum.maratis3d.com/viewtopic.php?id=402
gitHub : https://github.com/nistur/AquaGate