JaimitoEs
Member
DarkSpine works with GameMaker, as an extension. Put the core (an object) in a room, the editor is displayed (a master object that contains the Darkspine´s core) with its interface, where all the core scripting is stored.
The editor creates objects that are children of a relative that is not used in the whole game, which inherits a quantity of initial information, just as gamemaker does, these objects do not consume Cpu since they do not contain any event except for the create and destroy event. Once an object is created, it can be assigned different types of data such as its textures, the type of drawing, animation, buffers, physics, etc ... These objects can be transformed into any other object of your library, the object to replace will inherit the data previously inserted from the editor (you can choose a non inherit creation if you desire) when a level is executed in play mode. Basically it is to work as always, the objects placed in editor mode do not execute any script, only draw, when you enter in play mode is when the entire process of execution is performed in one step (NOW YOU CAN EXECUTE OBJECTS IN THE EDITOR!!).
The more precomputing you do from the editor, the less you have to load later while you play a level. Bassicaly when you play a triple A game, you must to wait a time of load, depending of how big is the world and how many data is loading. Here is the same concept, but is much more faster because all the big data is loaded at start of room, and this happen only one time in the game. Once all the data is assigned to the objects and you decide to play the game (or level in debug mode), the DarkSpine core is destroyed, leaving only the logic assigned to objects.
The current performance (Debugger mode):
Graphics performance stress test:
Pc (GM Studio 1.4):
* Cpu i5 2500k.
*Geforce GTX 760.
*ShadowPlay recording (Same graphics card to record, this reduce the fps counter).
*3 active monitors: 2 x (1920x1080) and 1 x (2560x1080).
* full screen and 1080P 60fps mode.
*View in screen: 12800 x 7200.
*Z distance -10000 to 20000;
*Unlocked room size (drawing in range of 19800X10800).
*Vsync enabled.
*Culling off (more expensive to draw).
* 2048 and 1024 textures (a single piece of foliage contains 2048x1024 pixels).
*Physics world activaded.
*Physics update speed = 120.
*Physics iterations = 15.
Fps range in editor mode: 182--230.
Fps range in play mode: 189--240 with all dataloads (object logic, physics, tweens, etc).
Smartphones
*same configuration.
*Reduced textures to 512..
Motorola nexus 6 (2014)
Fps range: 70-90. (54-68 in high thermal conditions)
Samsung galaxy A mid-range (2017)
Fps range: 70-110. (it appears not stressed, not much temperature)
*NOTE: Graphics pipeline optimizer consist in 2 scripts:
- The first script is executed manually in one step, just press a button and all instance are recreated in a specific order to optimize the texture swapping.
- The second script is not implemented at the moment, but basically is a vertex buffer merging, the script searches among all the objects that contain a buffer with the same textures and unifies them in a single buffer, thus having a single call to the graphic card and reducing the bottleneck of the vertex and fragment pipeline.
. There is more graphics optimizations implemented, like reducing the number of triangles of a vertex buffer on terrains and paths.
Create smooth or straight terrains, you can set a vector individualy, that means you can have only a part of the terrain smooth and the others straight for example.
Filling textures and edges:
Setup smooth vectors, only where is needed:
Bezier path don´t use the Game Maker path system, with this non closed polygon you can add an edge texture, switch the sprite corners to get different visual sides, this can be smooth or straight, like the terrain, you can configure the texture settings, physics properties, auto-gen of colliders, blending, colour, etc...
Filling textures and edges:
Setup smooth vectors, only where is needed:
Bezier path don´t use the Game Maker path system, with this non closed polygon you can add an edge texture, switch the sprite corners to get different visual sides, this can be smooth or straight, like the terrain, you can configure the texture settings, physics properties, auto-gen of colliders, blending, colour, etc...
Darkspine works with a hierarchy called "Deco" objects, Deco objects starts without data and you can insert the only essential data for every object, Deco objects can be setted to merge the data with a Deco parent. This picture represent a tree (parent) and foliage(childs):
Advanced object editing: An object can contain different types of data, such as an animation, a vertex buffer, a tween, color, blendmode, transformations,
physics, etc ... These objects can be converted into any object of your resource tree preserving the additional data that had been inserted .. If a copied object is a parent, your children will also be copied for later duplication.
DarkSpine can be manage vertex buffers like other 3d engines, you can tween, colouring, transforming in all dimensions, set physics values, like a regular object...
D´ont be afraid, the workspace in DarkSpine is like always, X is X, Y is Y and Z is the depth. That means the workflow are the same as GameMaker editor, indeed, DarkSpine is 100% compatible with your project, this does not interfere in your code, DarkSpine only need one Room, all is created and destroyed when you load, save or switch your levels...
Can i create a full game with DarkSpine? Yes! and without the use of rooms. The methodology are the same as GameMaker, once you have you level ready, you can swap the desired Deco object to your objects...Just assign the name of the object in a Deco object and it´s done, that means you do not to learn how works the core, just manage your project like always...
Can i implement DarkSpine like a game level editor? Of course, Darkspine starts putting only one object in one Room, so, imagination is your limit ( and your graphics card).
Advanced object editing: An object can contain different types of data, such as an animation, a vertex buffer, a tween, color, blendmode, transformations,
physics, etc ... These objects can be converted into any object of your resource tree preserving the additional data that had been inserted .. If a copied object is a parent, your children will also be copied for later duplication.
DarkSpine can be manage vertex buffers like other 3d engines, you can tween, colouring, transforming in all dimensions, set physics values, like a regular object...
D´ont be afraid, the workspace in DarkSpine is like always, X is X, Y is Y and Z is the depth. That means the workflow are the same as GameMaker editor, indeed, DarkSpine is 100% compatible with your project, this does not interfere in your code, DarkSpine only need one Room, all is created and destroyed when you load, save or switch your levels...
Can i create a full game with DarkSpine? Yes! and without the use of rooms. The methodology are the same as GameMaker, once you have you level ready, you can swap the desired Deco object to your objects...Just assign the name of the object in a Deco object and it´s done, that means you do not to learn how works the core, just manage your project like always...
Can i implement DarkSpine like a game level editor? Of course, Darkspine starts putting only one object in one Room, so, imagination is your limit ( and your graphics card).
The objects do not necessarily have to be in the depth of the layer, for example, a layer can have a depth value of 200, and the object belonging to that layer can be in a lower or higher number. In this way we have a very fast interaction of the environment if we want to hide the layer, block it, change its depth value, etc ... If you change the depth of a layer, the group of objects belonging to this layer will move relatively to its new value, which is perfect for repositioning the depth of objects in a single click ...
Cos the limits of images per posts, I will continue updating in the following posts...
Last edited: