Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Nero Game Engine  (Read 21634 times)

0 Members and 1 Guest are viewing this topic.

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #15 on: July 14, 2017, 11:58:50 pm »
Wow, the GUI looks so crisp! Just kidding, your project looks nice. ;-)

Thanks for the comment but also for the SFGUI library. When i started the project i asked myself, should i use QT or SFGUI, i wanted an engine that is simple and that focus on the essential, i think SFGUI suits the best to that philosophy. The library is great, i've used it on two others projects, one call MyFinances which is not related to game and another one called TheGame, i will show case them one day.

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #16 on: July 15, 2017, 01:35:58 am »
Engine Update

Object Node
I've implemented a Tree structure to hold all objects in a given scene. When i started the engine i was handling only Sprites, things were simple, each Layer of Sprites was represented by a std::vector. Now that the number of different objects begin to increase, i need a more flexible data structure. Starting from now everything in a scene will be encapsulated in a ObjectNode and attached to a parent.

The Different Objects
There are two main categories of objects, primary objects, and logical objects

Primary objects are represented by a Class in the engine. By exemple for Sprites, there is a Class called SpriteObject that encapsulate a sf::sprite.
List of primary objects : LayerObject, SpriteObject, MeshObject, PhysicObject (encapsulate a Box2d body)

Logical objects are built by combining two or more primary objects. Even if the engine recognize them, there are not explicit Classes that represent them.
List of logical objects : MeshedObject(a MeshObject attached to a Spriteobject), SolidObject (a SpriteObject attached to a PhysicObject)

I plan to make the concept of logical object a key concept of the engine. Complex objects like a Player could be build using that concept.
Also in the future (not for the first release), there will be more primary objects like : AnimationObject, LightObject, SoundObject, MusicOject, ParticleObject, ShaderObject etc.


Smart Layers
Now that each scene is based on a Tree structure, looking for a object could be more complex. To reduce the time of processing over the tree, objects are stored in Layers and each Layer always contain the same type of object. Also the engine can create automatically some Layers in order to prevent mixing different types of objects in the same layer.

Video Time 8)
The video present three types of objects : SpriteObject, MeshObject and MeshedObject
We can see that the engine automatically create layers. Also each layer has a Color that indicate the type of object it is holding.



Next Time
The next time i'll talk in detail about Mesh Objects and the Mesh Editor

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #17 on: August 09, 2017, 02:30:18 pm »
Mesh, Mesh Object and Mesh Editor

Hi! everyone, how are you doing. Let's talk about Meshes this time.

The Engine Modes and SubModes

Before talking about Meshes, it would be helpfull to talk about the Engine Modes and SubModes.
The Engine has been built to work in several Modes. Currently the Engine has only one Mode, the Scene Edition Mode. This mode allows to build a scene.
Each Mode has several SubModes. Our Scene Edition Mode has three SubModes : Object, Mesh, Play.
  • Object SubMode : This SubMode allows to handle any type of Object. The following actions can be perform : Add, Delete, Move, Rotate, Scale, Duplicate (copy the Object in any direction)
  • Mesh SubMode : This SubMode allows the edition of any Mesh present in the Scene.
  • Play SubMode : This SubMode allows to test the game in real time.

A Box2d Editor or a Mesh Editor ?

My first idea was to build a Box2d Editor. The Nero Game Engine, is built with the idea to be Simple, Intuitive and Efficient. I did not want users to struggle with Box2d stuff. So, a Box2d Editor was the perfect solution. But let's say thing clearly, build a Box2d Editor is realy tough, months ago i would just say, it's impossible.
When you create a Box2d Body, you can't modify it later, more, it's difficult to store the Box2d Body somewhere in order to play with it later because its constructor is private. It was the first time i've seen a private constructor. :-\
With all those difficulties, i've just given up and begin to think to alternative solutions.

But, But, one day i woke up, and the solution came to my mind  ;D
I've forgotten the Idea to build a Box2d Editor and decided to build a Mesh Editor instead. (I've stolen the name "Mesh" from Blender  8))
The Idea is that i don't need to Edit Box2d Body, instead, i can create Meshes and then generate Box2d Bodies from those Meshes. Meshes are pure SFML and C++, they don't contain any Box2d stuff, and the cool thing, it's that they are really, really simple to Edit.

Mesh

Meshes are just a powerfull tool. There are four types of Mesh
  • Polygon
  • Circle
  • Line
  • Chain
The four types of Meshes are handled by the same Class. This allows to switch from one type to another very easly. By example, a Line is made of two vertex (vertices), when you add one more vertex, the Mesh become automatically a Chain, and when you remove that vertex you come back to a Line.

MeshObject

A MeshObject encapsulates a Mesh. When a user is in the Engine Object SubMode, he can handle the MeshObject, this SubMode does not allow to fully edit the Mesh.

MeshEditor

When a user switches to the Engine Mesh SubMode, there comes the magic. Going in that mode, activate the MeshEditor and the user can now get access directly to the Meshes encapsulated in MeshObjects. In that mode the following actions can be perform
  • Add vertex
  • Remove vetex
  • Move vertex
  • Move Edge
  • Edge Extrusion

Next Time
I will post a Cool Video in the next hours  8)
The video will show the outcome of my work and the power of the Nero Game Engine.
« Last Edit: August 09, 2017, 02:48:23 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #18 on: August 09, 2017, 04:39:32 pm »
Nero Game Engine 0.5 / Enjoy Box2D Physics !

For this post, i'm not going to talk alot, just checkout the following video. I'm sure that many people who wish to make games with SFML and Box2D have dream of something like that.


Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #19 on: August 24, 2017, 10:39:13 pm »
Solid Object



As you may saw in the previous video, it's easy to add physics to sprites or more exactly to create Solid Objects. The following picture shows the process.



Things begin in the Engine Object Mode. First add a sprite, then select the sprite and add a Mesh. Et voila ! you just created a Meshed Object. The Mesh can take any Type (dynamic, static, kinematic) and any Shape (line, chain, polygon, circle).

By cliking on the Play button, the Engine goes to the Play Mode, it generates a Physic Object from the Mesh and attaches the previous sprite to it, what give us a Solid Object.


Physic Object

When you simply add a MeshObject (without selecting a sprite), the MeshObject becomes a simple Physic Object. This is good to create grounds, delimit areas or build the scene base shape. here is a resume of all objects.



A Versatile Engine

The way the Engine as been built, allows it to create any type of 2d games. When i've started the project, i've specified that i will focus on platformers, but even if you don't want to use Box2d physics or make platformers, The engine will suit to you as well. The Engine may be used to create RPGs, Top Down games, or Puzzle games like TicTacToe. We may notice three types of users.

  • Users 1 : I want to use all Box2d features

    That is the default behavior of the engine, you can use Bodies, Fixtures, Joints, Collisions, everything from Box2D

  • Users 2 : I don't want to use Box2d at all

    You just have to destroy all Box2d Bodies and Joints and then nullify the b2_world (m_World = nullptr). Of corse you won't have to do it yourself, i will add a Macro to handle that.

  • Users 3 : I want to use Box2D collisions but, I don't want Box2D Physics simulation

    You just have to make all Bodies as sensors, by doing that you will have a functionnal collision system without any physics simulation. I will add a box you can check somewhere, so all bodies will be automatically in sensor mode.


The Engine Logo

I've tried differents designs for the Engine Logo, and finally comes up with this one. Let me know what you think !




« Last Edit: August 24, 2017, 11:11:25 pm by Sk Landry »

sjaustirni

  • Jr. Member
  • **
  • Posts: 95
    • View Profile
Re: Nero Game Engine
« Reply #20 on: August 26, 2017, 01:09:18 pm »
Neat progress on the Nero, Keep up the good work!

Concerning logo, IMHO the font is not suitable for a logo at all. The graphic is so-so, I wouldn't use it for sure. It is apparent you're not a logo designer (nor am I. It takes a lot of time and skill to become good at designing logos). If you want to get inspired, however, I recommend looking at dribbble posts.  https://dribbble.com/search?q=logo&s=latest

Hapax

  • Hero Member
  • *****
  • Posts: 2657
  • My number of posts is shown in hexadecimal.
    • View Profile
Re: Nero Game Engine
« Reply #21 on: August 27, 2017, 02:07:21 am »
This engine looks quite impressive. I noticed that your repository is empty again...

the font is not suitable for a logo at all
I recommend looking at dribbble posts.  https://dribbble.com/search?q=logo&s=latest
I clicked the link to look at what was there and there was a logo right there using literally the same font! ;D
It actually looked okay; it was "serious".

However, I actually agree with you; it doesn't work here. It's a boring font and I doubt anyone would want to associate something boring with their 'sparkly, awesome game engine!'

I don't mind the actual shape of the logo but it makes no connection with me as it seemingly has nothing to do with what it represents (the product or its name). What is it? ???
Consider where the name Nero came from and why you think it's appropriate for this engine and maybe come up with a logo that represents that.
Or... just represent something linked to games :P
Selba Ward - SFML drawables
Kairos - Timing Library
Rectangular Boundary Collision - Rectangular SAT Collision

@Hapaxiation - Hapaxia on Twitter

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #22 on: August 27, 2017, 06:27:22 pm »
Hi! guys, thanks for the replies, it helps me improve my work.

It seems i still have a lot to do on the logo  :P. I'll make more researches on logo creation, and also ask a friend to help me with that.

From the end of this month i'll be a little busy with other stuff, so the development of the engine will slow down a bit.

In my next post, i'll discuss the remaining tasks before the first release, and also when i plan this release to be done.
« Last Edit: August 27, 2017, 09:37:10 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #23 on: September 06, 2017, 10:13:02 pm »
What next for the Nero Game Engine ?

Hi! Everyone how are you doing  :D

It's almost one year that I’ve started the project. I've got into the habit of making a post only when I actually make some progresses in the development. I know, that, in this way it's difficult for you to understand where I am going with the Engine. So in this post I will describe the work that need to be done in order to complete the Project.

The First Release
 
The first release will be the version 0.6.x, the Engine will be released as a precompiled library/API and games will be developed in C++
In order to make this release many tasks need to be done.

  • Task 1: Rebuild the "Saving and Loading" feature

    When I’ve implemented the Object’s Tree data structure, I’ve completely modified the engine heart. By doing that I’ve destroyed totally or partially some features like: the way things are added or removed in the canvas, the way things get selected, the way the layers work, etc. I've already re-implemented most of those features. The remaining one is the way Scenes are Saved and Loaded.
    Good news, I’ve already solved that in Pseudo code, I just need to make the implementation.

  • Task 2: Add a window that let edit Physic_Objects properties

    As you may saw, the Engine use Meshes in order to generate Physic_Objects. So all Physic_Objects properties are carried by Meshes. Currently only the type (Dynamic, Kinematic, Static) of the mesh can be choosed. But for those you know Box2D, Box2D bodies are made of one Body (b2Body) and somes Fixtures (b2Fixture). Bodies and Fixtures have properties like density, velocity, fix rotation etc. that can be customized. So there will be a window to handle that.

  • Task 3: Add a way to give a "Name" and a "Category" to each Object

    The Name of a object will be the primarily way to retrieve it in the code. In the code it'll be possible to write something like: Object o = engine.findObject(“ojbect_name”)

    The Object Categories will serve primarily to build the game collision logic. In simple word you will be able to specify which category of object can collide with which other category. In the code it'll be possible to write something like:
    • can_collide (Player, Enemy);
    • can_collide (Player_Bullet, Enemy);
    • can_collide (Player, Enemy_Bullet);

    Internally the engine will configure Box2D Collision Filtering for you.

  • Task 4: Process Box2D Collisions

    Build a game will consist mainly to retrieve collisions and give response to them. Box2D gives four functions to handle collisions:
    • BeginContact(b2Contact* contact)
    • EndContact(b2Contact* contact)
    • PreSolve(b2Contact* contact, const b2Manifold* oldManifold)
    • PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)

    As I don't want users to struggle with Box2D stuff (It really gives some headaches), the Engine will process collisions for you in order to simplify things. For each of those four functions you'll be able write something like

    • nero::Collision c = engine.process(b2Contact) or
    • nero::Collision c = engine.process(b2Contact, b2Manifold) or
    • nero::Collision c = engine.process(b2Contact, b2ContactImpulse

    That way you will only have to deal with nero::Collision, the nero::Collision will give you the two nero::Object that are colliding and all other information concerning the collision.

  • Task 5: Build a game prototype

    To ensure that the Engine is ready for a first release I will build a game prototype. The prototype will be entirely made with physics, that means no graphics (Sprite), no sound, no music. The goal will be to have a fluid game.

    It’ll be a platformer, the Player will be a simple Cube or Circle that can move right/left, jump, double jump and dash.

    This prototype will be used to test the engine fluidity but also its limits.

The Second Release

After the first release, we will have an Engine that work fine, with most bugs fixed. Now in order to show the power and the potential of the Engine I will build a small adventure game (only one scene) with high quality graphics. In this game, Box2D physics will be completely transparent and the following features will be added
  • Animation Object
  • Sound Object
  • Music Object

When this game will be completed the Engine will be ready for a second release (The Official one with a full tutorial). And again the engine will be release as a precompiled library/API and games will be developed in C++

The Third Release

The third release will concern the version 0.7.x to 1.0.0

In those versions Lua will be added as a scripting language, therefore the default language to build games with the Nero Game Engine will be Lua. And the Engine will no longer be a Library/API, You will be able to install the engine as any other software on Windows, Linux and MacOS and start build games in your prefer IDE (Notepad++, Sublime etc).

The End

After adding Lua as a scripting language, my work will be completed. Of course I’ll continue to maintain the Engine and fix bugs but I will no longer add some features.

But, you should know that many features could still be added to the Engine, features like Particle Object, Soft Light Object, Shader Object, Artificial Intelligence etc. Also ones could think to carry the Engine on QT in order to benefit from more advance feature like color wheel, MVC structure, file management etc.

The Engine will be open source, so if any one wish to add features to the Engine it'll be up to him, also I know there are others great projects on this forum, those projects could be combined with the Nero project in order to build a real big and robust framework for SFML users.


It's all for this post, have a good day  8)

« Last Edit: September 07, 2017, 09:22:06 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #24 on: September 18, 2017, 12:32:48 pm »
Nero Game Engine Happy Release  :)

Hi! everyone, in a  previous post, i've said that i will be busy on the next days, so i'll need to slow down the development, but guess what, i suddenly get some days off! what allows me to make a great progress on the Engine. Therefore i'm pretty happy now  ;D. Instead of making a post on the new features or make a video, i've thought, it would be better if you can try the engine yourself.

There is the download link, it is a 32 bit version, it should work on any Windows

Nero Game Engine Happy Release 1.0

One Precision, this is not the Engine First Release, it just a way to let you have fun with the engine.

Inactive Features

The following features have been disabled or are not implemented yet
  • Auto Save
  • Save
  • Load
  • Grid
  • Gravity (Grav X, Grav Y)

Break the Engine , Report bugs

Currently the Engine doen't defines limits, the canvas is infinite, the number of objects that can be added is infinite, the number of vertex in a line or polygon is infinite, objects can be zoom down or up at infinite etc.

So you are free to play as you want. I encourage you to try to break the engine in any you could think, and if you find bugs just report it.


Resources

The resources used in the download has been grabbed over the internet, i've no right on them, but they are mostly free resources.

You can use the Textures you want, just copy them in the /Resource/Texture folder.


How to use the Engine

I will make some regular posts on how to use the Engine, and if you have any question just ask, Those posts will be gathered later in order to build the engine Tutorial Book

The Engine use the following Inputs

  • Mouse or TouchPad
  • The Numpad
  • CTRL, SHIFT, ALT  : in combinaison with the Mouse, TouchPad and Numpad
  • Space bar, Escape, Delete, R, P, B, Right Arrow, Return
« Last Edit: September 24, 2017, 08:22:39 am by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #25 on: September 23, 2017, 11:06:07 am »
Nero Game Engine Happy Release 2.0

Hi everyone, how do you do!

Before to begin with the Engine Howtos, i've taken the time to add the following features to the Engine.
  • Save and Load Scenes
  • Auto Save Scenes
  • Undo and Redo Actions

I'll present those features briefly, the details will be for another post

Save and Load Scenes

Each Scene is saved in a single JSON file locate at NERO/scene_name/scene_name.json

Auto Save Scenes

The Auto Save feature is based on the Save and Load feature, when Auto Save is activate, the scene is saved each 30 seconds

Undo and Redo Actions

This feature is an unexpected one.  I did not plan it since the beginning of the Project. But when, i've completed the Save and Load feature, I realised that I could use it to build a Undo Redo System.

Currently there no limit on the number of Undo-Redo.

Download link

Nero Game Engine Happy Release 2.0


Howtos

I'll begin the How to use the Engine series this weekend
« Last Edit: September 24, 2017, 08:26:34 am by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #26 on: September 23, 2017, 06:49:39 pm »
How to use the Engine 00 : The Nero Dev Engine !

Hi guys ! Are you ready for the Nero Game Engine Adventure ?.....? Let's begin !

This series of Howtos will show how to use the Nero Dev Engine. Since the engine is not complete, those Howtos will cover only the available features.

You can download the Dev Engine in beta version on the Post just above this one!

There is a little overview of those Howtos.
  • How to use the Engine 01 : Play with Objects !
  • How to use the Engine 02 : Control the Camera !
  • How to use the Engine 03 : Let's Edit Meshes !
  • How to use the Engine 04 : Workflow !
  • How to use the Engine 05 : Use your own Resources !

Before we start, one more precison. The Dev Engine Interface can be devided in Three Main Part :
 
The Left : The left side of the Canvas : Engine Mode, Save, Load, Sprite Tab, Mesh Tab, Color Tab
The Center : The Canvas, the utility buttons on top the Canvas, the Log window bellow the Canvas
The Right : The right side of the Canvas : Layer, Mesh, Object, Scene, Draw Checkbuttons etc.

So if I say you can change the current Scene using the Select Button in the Top Right of Engine you know where it is.





How to use the Engine 01 : Play with Objects !

Build a Game Scene consists to add Objects onto the Canvas and then Customize them. There are three (3) types of Objects : Sprite_Object, Mesh_Object, Meshed_Object

Add Sprite Objects

In order to add a Sprite_Object, click on a Sprite_Button. On the Left of the Engine you have the Sprite_Tab. By passing the Mouse over the a sprite button you can see a Sprite_Preview. You can use the Numpad_Multiply and Numpad_Divide buttons to scale the Sprite_Preview.

Add Mesh Objects

In order to add a Mesh_Object, select a Mesh_Shape (Polygon, Circle, Line). On the Right of the Engine you have the Mesh_Selection_Button.

Mesh_Objects are created with a default Type. Polygons and Circles are always created as Dynamic Mesh and Lines as Static Mesh.
In order to change the Mesh type, select it and choose the Type you want (Dynamic, Static, Kinematic).

Add Meshed Objects

In order to add a Meshed_Object hold the CTRL key and click on a Sprite Button, it's the same way that to add a Sprite_Object but you need to hold the CTRL Key befor.
The default Mesh of a Meshed_Object is always a Dynamic Polygon Mesh. To change that, select your Meshed_Object then choose the Mesh_Shape and the Mesh_Type you want.

A Meshed_Object is a combinaison of a Sprite_Object and a Mesh_Object, so Actions that can be applied on one of the both, can be applied to the Meshed_Object.

Select Objects

When you make a Left_Click on an Object, you Briefly select it. As soon as you release the Left_Click the Object get unselected.

In order to make a Permanent Selection you have to make a Right_Click on the Object.

Remove objects

You have two ways to delete an Object. The first one is to make a Permanent Selection and then press the Delete Key. The second one is to hold ALT and Left_Click on the Object.

Move, Scale, Rotate  Objects

You can Move, Scale, Rotate Objects with either the Numpad or Mouse.

Mouse / Move : Left_Click on a Object. Hold your click and move the mouse
Mouse / Scale : Hold the CRTL key. Then Left_Click on an Object. Hold your click and move the mouse Up or Down
Mouse / Rotate : Hold the SHIFT key. Then Left_Click on an Object. Hold your click and move the mouse Up or Down

Using the Numpad you have to make a Permanent Selection on the Object first and then Hold the CTRL key.

Numpad / Move : Numpad_4, Numpad_6, Numpad_2, Numpad_8
Numpad / Scale : Numpad_Addition, Numpad_Substract
Numpad / Rotate : Numpad_7, Numpad_9, Numpad_Multiply, Numpad_Divide

Flip Objects

The Flipping concerns Sprite_Object or Meshed_Object. When you apply it to Mesh_Object or even Meshed_Object you may encounter some weird behaviours, that because, Meshes are not meant to be flipped. But it's not a big deal, you just have to Edit your Mesh to fix it. I'll correct the Flipping function for Meshes one day  :)

In order to Flip an Object, first make a Permanent Selection and then Hold the CTRL key

Numpad / Flip Horizontally: Numpad_1
Numpad / Flip Vertically : Numpad_3

Duplicate Objects

This is great to make Tiled-Like Scenes.

In order to Duplicate an Object, first make a Permanent Selection and then Hold the ALT key

Duplicate Horizontally and Vertically    : Numpad_4, Numpad_6, Numpad_2, Numpad_8
Duplicate in Diagonal                  : Numpad_1, Numpad_7, Numpad_9, Numpad_3


Layers

On the Right you can see the Stack of Layers. There are some buttons to Add, Delete, Move UP and Move Down Layers.

The See_Button allows to Hide or Show a Layer
The Check_Button allows to Select a Layer

When you add an Object, it goes to the Currently Selected Layer. But Layers always contain the same Type of Object. So if you add a Sprite_Object when your currently selected Layer contains some Meshes, the Engine will create automatically a new Layer before to add the Sprite_Object.

Move an entire Layer

It is possible to move all Objects in a Layer. In order to achieve that, first, make sure the Layer is selected, then Hold CTRL and ALT and use the following keys: Numpad_4, Numpad_6, Numpad_2, Numpad_8

That's All!

That's all for the first Howto. Just bear in mind that you can play with Objects either with the Mouse or with the Numpad. By default the Numpad is used to handle the Camera, so in order to used it with Objects you have combine it with CTRL or ALT. We'll talk about the Camera in the next Howto.
« Last Edit: September 24, 2017, 08:55:39 am by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #27 on: September 25, 2017, 09:35:26 pm »
How to use the Engine 02 : Control the Camera !

Hi everyone !

In the previous Howto, we saw how to add, remove, duplicate objects and more! so let's play with the Camera this time.

Scroll the Camera

Using the Numpad you can scroll horizontally and vertically the Camera using the following keys :
Numpad_4, Numpad_6, Numpad_8, Numpad_2

Using the Mouse you can achieve the same actions with CTRL + Mouse_Wheel for scrolling vertically and ALT + Mouse_Wheel for scrolling horizontally.

If you use a Touch_Pad you don't have to use ALT + Mouse_Wheel, you can scroll horizontally directly.

Scale the Camera

Using the Numpad you can scale the Camera with the Numpad_Addition and Numpad_Substruct keys.

Using the Mouse you can scale the Camera with the Mouse_Wheel

Rotate the Camera

Using the Numpad you can rotate the Camera with the Numpad_7 and Numpad_9 keys

Using the Mouse you can do the same with SHIFT + Mouse_Wheel


Save and Restore the Camera

I guess the actions above were pretty obvious, so what about this one.

The Canvas is infinite, so you may lose yourself going here and there. In order to avoid that you can register the current Camera state (Position, Scale, Rotation) with ALT + Numpad_5. Now you can go where you want and press the Numpad_5 key to come back.

Sk Landry

  • Jr. Member
  • **
  • Posts: 61
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #28 on: September 25, 2017, 11:18:54 pm »
How to use the Engine 03 : Play with Meshes !    |    Part 1 : Mesh Edition !

Meshes are a key component of the Engine. I'm sure you'll like to play with them.

There are four types of Mesh. Polygon, Circle, Line and Chain. When you click on the Mesh_Selection button on the Right of the Engine, you don't see "Chain" along with "Polygon", "Circle" and "Line", that's normal because Chains are created out of Lines.

soooooooo Let's Begin !

Switch between the Object Mode and the Mesh Mode

You can switch easly between Object Mode and Mesh Mode using the Space bar key.

If you want to get to the Play Mode you have to do CTRL + Space bar, to come back to Object Mode, just press Space bar again (we'll talk more about that later).

When you are in Object Mode, you are dealing with the Object_Manager of the current Scene. By going in Mesh Mode, you are letting the Mesh_Editor take control of the Canvas.

The Mesh_Editor has access to all Meshes present in your Scene either the mesh is encapsulated in a Mesh_Object or a Meshed_Object. It can fully modified them but not delete them.

Move Vertex

To move a Vertex, Left_Click on it, and drag it where you want.

Move Line

To move a Line, Left_Click on it, and drag it where you want.

Add Vertex

Vertice can be added on any Line. For that, make a Right_Click where you want on a Line.

Remove Vertex

A Right_Click on a Vertex will remove it.

Drag Mesh

You can Left_Click and drag easly a Polygon, a Circle or a Line. To move a Chain you have to select it first (see below)

Select Mesh

Use CTRL + Left_Click in order to select any Mesh, it will become Orange

You can click any where else in the Canvas to make a deselection (In the next release I will configure the Escape key for deselection)

Move, Scale, Rotate Mesh

When a Mesh is selected you can Move, Scale or Rotate it the same way you do with Sprite : CTRL + Numpad Keys. The Mouse is not used here, it works only with the Numpad.

Extrude Line

If you have ever used a 3D modeling software you know what Extrusion means, if not you can Google it.

In order to Extrude a Line you just have to hold the SHIFT key then Left_Click and drag.

Extrude Vertex

Works same as for Lines. Hold the SHIFT key then Left_Click on a Vertex and drag.

It only works on Lines and Chains Edge Vertice Currently !!!, I may consider extend that to others Vertice in the next releases.


Flip Mesh

I did not consider that feature even once since I've begun the Project. I'll make that for Engine Second Release.

Mesh Validation

Each time a Mesh is modified the Mesh_Editor checks for its validity. When a Mesh it's not valid it becomes Red

A Red Mesh is not converted in Box2D Body because the Box2D library raise Exceptions when it can't generate a Body.

The Mesh Validation System is currently incomplete !!! You may encounter some crashes when you have at least three Vertices almost aligned. The current solution is to Save your Scene before hitting the Play_Button or the Return Key.
 
That's All !

So, that's all for this Howto. With the Mesh_Editor, you can create any shape like Trees, Animals , Landscapes, the limit is your imagination.

when you are done editing some Meshes, you can press the Space bar key to return in Object Mode and then press the Return key in order to see your Meshes come alive. On the Bottom Right of the Engine you have some Check_Buttons that allow you to hide or show divers information about Box2D Bodies.
« Last Edit: September 26, 2017, 12:11:17 am by Sk Landry »

Ruckamongus

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
Re: Nero Game Engine
« Reply #29 on: September 26, 2017, 08:41:58 am »
I really enjoy reading your progress post and tutorials! It'd be cool if you had saving/loading working so you could include a complete project. Also, I can't play with it because you didn't statically link gcc runtime stuff or include the dll's.