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

Author Topic: Nero Game Engine  (Read 25851 times)

0 Members and 1 Guest are viewing this topic.

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #60 on: September 18, 2018, 12:02:08 pm »
Hi everyone !, hope you are doing greet  ;D. Today let's talk about Animation.

Animation Tools

In order to simplify Animations management the Nero Engine relies on other tools. Texture Packer and ShoeBox.

Texture packer

I've already talked about this one. It's a tool that let you pack several images in one Spritesheet.
When you use Texture Packer to pack your animation, you obtain two files. A image file (.png, .jpeg, etc) and a Json file. The Nero Engine relies on this two files to generate animations.

ShoeBox

What is ShoeBox ? ShoeBox also allows to pack image files. But the great thing is that it also allows to Unpack Spritesheets. When you search for animations over the internet, most of the time you will find some animation SpriteSheets. And there come a question : The animation is already packed, how am I going to use it in Texture packer ?. Well,  ShoeBox can unpack SpriteSeets, it can also unpack GIF images. Yep, If you have an animation in GiF format, you can unpack it using an online service or with ShoeBox.

ShoeBox is free, you can find it here.

Load Animation

When you obtain the two files generated by Texture Packer, you simply have to copy and paste them in the "/Resource/Animation" directory. The rest is automatic, the Engine read your files and build the Animations.

In the picture bellow, you can see that each animation is made of one PNG file and one JSON file. Both files must have the same name.


Animation Object

On the left of the Engine Interface, There is now an Animation Tab. All loaded animations can be founded there. Animations work like Sprites. If you put the mouse over an Animation_Button you can see a Preview.
If you click on a Animation_Button you add a Animation_Object onto the Canvas.

Animations are like any other Object, you can move them arround, Rotate them, Scale them, Duplication them etc.

Like Sprite, you can change the Color of your Animation, simply select the Animation Object and process like if it was a Sprite Object.

A Layer of Animations appears with a Yellow color, this is temporary I will review all the Colors for Layer's types

Animations and Physics

Again the process is the same as for Sprite_Object. Hold CRTL and Click on a Animation_Button to add a Animation_Meshed_Object onto the Canvas. When a Animation_Meshed_Object is selected you can go to the Mesh Tab and change the properties of its Mesh Object. When you build your Scene by clicking on the "Return key" or the "Play Button" the Animation_Meshed_Object becomes a Animation_Solid_Object.

A Layer of Animation_Meshed_Object appears with a Light Blue color, this is a temporary color;

Animation Sequences

An Animation is made of Sequences. Each animation has at least one sequence. If the Animation concerns a character we usally have something like ("idle", "walk", "run", "jump"). If the Animation concerns a simple background object like flowers or animals you simply have one sequence.

When you add an Animation Object onto the canvas, the Animation has it's default sequence selected.  In order to do that, the Engine need to know the name of the default sequence.  For a character the default sequence is the "idle" sequence. But for a none character animation is it called "idle" ? I had three choices : "idle", "default", "The name of the animation". I took the last one.

If you have an Animation called "player" and the following seqences ("idle", "walk", "run", "jump"), the Engine will expect you to name your sequences as followed
("player", "walk", "run", "jump").

If you have a Animation called "flower" whith one sequence, the engine will expect that sequence to be called "flower".

The Sequence Tab

Alongside with the Sprite, Animation and other Tabs, you now have the Sequence Tab. By default this Tab is empty, but when you select an Animation Object, the Sequence Tab shows all the Sequences available for the selected Animation Object.

From this tab you can configure the frame rate of each sequence. the value is in hertz (inverse of second). If you choose of frame rate of "10", it means "1/10 second";

(click to show/hide)


Animation is not Just Animation

You can see a nero::AnimationObject like a nero::SpriteObject that have the power to change is internal Sprite whenever it want. Imagine you have a breakable object in your game. That object will have several state ("healthy", "half break", "break"). This is not a animation, but it can be represented whith a Animation Object.

In order to say to a Animation to stop being a animation, you simply have to tell him to never update itself
animation_object->setUpdateable(false);

After that you have the power to controle the animation manually.
animation_object->setFrame(0) // by default the object is healthy
animation_object->setFrame(1) //the object has been half broken, let go to the second frame
animation_object->setFrame(2) //the object has been complety broken let go to the last frame

that's all for Animation, I will make a post later today in order to present other new features.
Here is a video that shows how Animation looks like



« Last Edit: September 18, 2018, 12:18:38 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #61 on: September 18, 2018, 03:37:55 pm »
Hi again ! Now the Engine have Animations (see the post above), but that's not all. In this post I will show all the new features I've been working on

Merge Layer

It is now possible to merge two layers. The only condition is that, they have to be of the same type (the same color).
On the Right of the Engine there are two new buttons: "Merge UP" and "Merge Down".
When you merge up by example, the content of the currently selected layer is taken and added to the layer above.



The Axis icon

On the bottom left of the Canvas there is now a Icon that shows the direction of the X and Y axis. I saw this in Blender so I thought it would be cool to have one in the Engine  8). The Icon rotate when the Camera rotate. You can hide it if you want, just uncheck the "Axis" check box on the Right of the Engine Interface.



Scale preview with Mouse Wheel

When the mouse is over a Sprite_Button or a Animation_Button, you can now scale the preview with the Mouse Wheel. Previously the Divide_Key and Multiply_Key were used, but using the Mouse Wheel is more fun  :).

Mesh Edition, Axe aligned movement

Mesh edition can be tough sometimes. In certain cases you want to move a vertex, only vertically or only horizontally but your mouse just doesn't want to let you do that. Now you don't have to be an expert at moving the mouse to do what you want. I made a little change in the algorithm. When moving a vertex, a line or an entire mesh, if your movement is more vertical than horizontal the Engine will assume that your movement is only vertical.

Example : we have a vertex at (1, 1). we apply a movement of (2, 4). the result should be (1+2, 1+4) = (2, 5).
but now the engine say, abs(4) > abs(2) so lets apply a movement of (0, 4) instead, the movement is nullify on the x Axis.

The Canvas Grid

This feature is still in development. By default the Grid is Hidden, you can make it visible by checking the "Grid" check box on the Right of the Engine.

What I am trying to do here is a "Infinite" Grid. When the Grid is Axe aligned there is no problem to simulate an "Infinite" Grid, you can move the Camera vertically or horizontally as you want, the Grid will adapt itself. But When the Grid is rotated, it becomes difficult to simulate "Infinity".

For now I am just playing with this feature I don't know exactly what it will be.



Lua Script

The integration of Lua in the Engine is beginning slowly. Each nero::Scene now have a instance of a  "Lua State" called "L". All the Lua standard libraries are loaded by default. If you have some experience with Lua and C++ you can already begin to call your scripts in your nero::Scene Class.

Github updated

The Github repository have been updated. we are now at the version 0.8.0 . The code is not stable, I will have to review the code to make sure every is right. When it's done I will publish a new version of the SDK with all the new features. If you like the project don't forget to give a start to the project on Github


That's all for now. thank you for reading my posts and see you later.

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #62 on: September 27, 2018, 08:57:13 am »
The Nero Adventure Scene

Hi everyone, how do you do.

In order to complet the Engine and reach the first version, I needed to work on a concrete Game Scene. So I took the code of my game prototype and begin to update it. I gave up on the name "Kero", it's now call the "Nero Adventure Scene". The artwork I'am using is from the Open Pixel Project and the Kenney Asset Store.

The Scene will be composed of 5 parts:
   1- A Startup Screen (display when the Render Engine start)
   2- A Game Menu Screen
   3- A Game Scene (the actual game)
   4- A Pause Screen
   5- A Credit Screen (display when you finish the game)

The idea is to cover most of the Engine features. The code develop in this game will be added in the "Nero Game Lib" library.

Here is a first look of the main character


Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #63 on: November 24, 2018, 11:41:42 am »
Hi everyone !. Hope your are doing great.  ;D
I made a lot of progress on the Engine development, I had not enough time to write a post, so there will be a lot to say.

Text Object

New object types have been added in the Engine. Let's begin by the Text Object.

On the left of the Engine Interface, along with the Sprite Tab, there is a new Tab named Text. From this Tab you can create some Text Objects and edit their properties.

Like other object types, a Text_Object can be moved, rotated, scaled, duplicated etc.

When a Text Object is selected you can change its font, its font size (character size), its outline thickness and its style (bold, italic, underline, linethrough).

From the Color_Tab you can change the text color but also the text outline color.

I'm currently using SFML 2.4.1, in the latest versions of SFML, there are two other text properties : Latter Spacing and Line Spacing. I will add those properties when I update SFML.

Write a New Line.

In order to return to the line when writting the text of your Text Object, you must insert a special character. By default it is  the pipe ( | ) character. You can choose the character you want my modifying the configuration file config/engine_config.json. The property is named carriage_return

It's more easy to explain with a video. So here is one.




Re-order Object

There are now two buttons allowing to move a Object Up or Down in the current Layer.




Default file/directory generation

In a previous post, I said the Engine need some directories and files to be available in order to work properly. For example we have the resource directory and all its sub directories, the log configuration file, the Sansation font, and some new config files I added recently.

From now on the Engine will generate those files and directories automatically on startup if they do not exist.

There are many configuration files in the config directory, If you made some changes on them and want to revert the changes, just delete them, the engine will bring them back.


The Log View

Bellow the Engine Canvas you got the Log View. It is now possible to log in this area from a nero::Scene. Each nero::Scene now provide a function void log(std::string message) that print its message in the Log view. This function internally call the nero_log(message) function, so the message will be also print in the console.

If you create a new class and want to log from this class to the Log View it's pretty easy. The log function is store in a std::function<void(string)>, you can retrieve it with the nero::Scene function getLog() and give it to your class;

myNewClass.setLog( getLog() );


FrameRate and FrameTime

From a nero::Scene it is now possible to retrieve the FrameRate and FrameTime with float getFrameRate() and float getFrameTime().
  • The frame rate is the number frame in one second.
  • The frame time is the duration of one frame in seconds.
The Engine Interface show its own frameRate and frameTime at the Canvas bottom right. The Engine Interface frameRate is not the actual Game frameRate. Since the Engine Interface manage more things, the Game frameRate will be higher.




All nero::Scene Attributes Private

All the attributes in a nero::Scene are now private. Attributes will be accessed by some getters and setters.

It's no longer possible to write :
m_ObjectManager->findObject(name)
Now you will have to write :
getObjectManager()->findObject(name)

The objective is to secure the nero::Scene class. If a variable can be modified there will a setter, if a variable can be accessed there will be getter. This offer a more clean interface.


Last active Scene.

If you are working on several Scenes at the same time, you may switch between Scenes many time. From now on, if you close the Engine and restart it, the Engine will remember the last Scene you were working on, and will select it on Startup.

If the Engine is close properly via the Window close button or the Quit button above the Canvas, the Engine will save all your scenes befor to shutdown.


That's all for this post. There are more changes in the Engine, but those will be for another post. Have a good day !  :)

« Last Edit: December 09, 2018, 06:29:38 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #64 on: November 27, 2018, 02:15:11 pm »
Hi everyone, how are you doing ! Let's continous with the Engine Updates.

Fix Game loop

When playing with my Adventure Scene I notices that the game speed was not stable. Sometime the game accelerate, some time it slow down. The default loop speed is 60 FPS. This is a fixed time, so it surprised me to have that issue. But after inspecting the Engine game loop I saw that the rendering was done in the while loop.

while(timeSinceLastUpdate > TIME_PER_FRAME)
{
    //retrieve 1/60 second in the accumulated time
    timeSinceLastUpdate -= TIME_PER_FRAME;

    //1... handle user inputs
    handleEvent();
    //2... update the game
    update(TIME_PER_FRAME);
    //3... render the game
    render();
}

I put the rendering out of the game loop, now thing work smoothly.

while(timeSinceLastUpdate > TIME_PER_FRAME)
{
    //retrieve 1/60 second in the accumulated time
    timeSinceLastUpdate -= TIME_PER_FRAME;

    //1... handle user inputs
    handleEvent();
    //2... update the game
    update(TIME_PER_FRAME);
}

//3... render the game
render();


The Grid

I now completed the Grid feature. I give up on the idea to build an infinite Grid. Building a grid that update it self when the camera moves is pretty complex and I didn't have time to do it.

The new Grid use a more simple approach. The Grid is made of cells. You can configure the width and the height of cells and choose how many cells you want horizontally and vertically. Finally you can move the entire Grid.

The movement of the Grid is not pixel based. You don't realy move the Grid , it is more accurate to say that you apply an offset to the Grid . Move the Grid is equalent to offset the Grid of one cell. By example if you move the Grid up, the Grid will move of one cell up and the same goes for the other directions.

Also the color of the Grid can be changed from the Color Tab.

Next time I will present the most important new feature that as been added to the Engine : Screens and Screens Stack. The Grid plays an important role for Screens so I needed to present it before.



Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #65 on: December 09, 2018, 07:03:16 pm »
Hi everyone, how do you do, Hope your are doing great.  :)

Twitter account

I opened a Twitter account some days ago, you can follow me and stay update any time on the Engine development.
Twitter - NeroGameEngine.

Scene Screens

Today we are going to talk Screens. This is a new feature in the Engine, I did not plan it for the first version, but I finally thought it would be cool to have it.

What is a Screen ?

First, let's begin by what most people know : Game States. In a Game we generally have several states like : the game levels (each level being a state), the start menu, the pause menu, the options menu and many more. In order to manage all those states people generally develop a Sates and States_Stack system. In this system you can switch between States by pushing or poping them.

Instead of using a State/States_Stack System, the Nero Game Engine will use two differents systems. the Screen System and the World Chunk System. Those two systems combined will offer more power than a simple State System.

  • Screens :
Screens are displayed on top of the Game world. They can be used to build game menu but they can also be used as a UI Panel (window) in a menu.
  • World Chunk :
A World Chunk is a part of the Game World that can be load or destroy dynamically (during the game). Therefore One World chunk can represent a game level, but also, One game level can have any number of World chunks. The ability to load and destroy World Chunks dynamically will allows to build very large level. World Chuncks will be added in the second version of Engine.


Add, Delete and Rename Screens

On the top left of the Engine Interface, just after the Utility_Tab, we now have the Screen_Tab. From this tab, we can see all the available Screens, add new Screens, delete Screens or rename Screens.

Each Scene always has at least one Screen, you can delete any Screens but once it left only one Screen, the delete button will have no effect.




World View and Screen View

By default the Engine start in the World View. In order to access Screens we need to switch to the Screen View. On the right of the Engine Interface there is a button called Screen View. It's a toggle button, when the button is activated we goes in Screen View, when it's desactivated we come back to the World View.



The current View mode is also displayed on the bottom right of the canvas.



Just below the Screen View button there is a list that allows to select a Screen.




Build Screens

When a Screen is selected we can start building it. Each Screen has its own Canvas color, its own Grid, its own Camera, its own layers. Basically everything you do when a Screen is selected will affect only that Screen. Each Screen maintains its own Undos and Redos

Not all types of Objects can be added to a Screen. There is no Physics in a Screen, Therefore it's not possible to add Mesh_Objects, Meshed_Objects (Sprite with Mesh) and Animation_Meshed_Objects (Animation with Mesh) In Screens.

We can only add Sprite_Objects, Animation_Objects, Text_Objects and Button_Objects.

Button_Object is a new type of Object that can be add on Screens but not in the Game World, I will present it in my next post.

Screen and Grid

In my last post, I said that the Grid was important for Screens, it's time to know why. Screens are rendered on top of the Game World and they are not affected by the Camera movement. Therefore in order to be visible a Screen must be contained in a strict area. Since the Canvas is infinite it's become easy to be lost. This is were the Grid comes, if you plan to render your game in a 800 x 600 resolution or a 1024 x 800 resolution, you will have to configure a Grid of the same resolution with an offset of (0, 0). The Grid will represent the Screen area and everything in the Grid will be displayed.

That's all for this post, there is more on Screens but that will be for the next post. The video shows the different Screens I built for the Adventure Scene.

« Last Edit: December 09, 2018, 07:31:47 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #66 on: December 12, 2018, 11:33:18 pm »
Hi everyone! Hope you are doing great.  :)

In this post I will present more stuffs concerning Screens, and review the state of the project.

Screens and Render Engine

While the DevEngine Interface allows to build Screens, the DevEngine is not able to render those Screens. Screens will be rendered only when the Scene is run within the RenderEngine. The reason for that is simply because the Screens are built arround a specific resolution. If you build a Screen with a resolution of 1028 x 800 by example, the Screen will not fit in the DevEngine Canvas.

Push and Drop Screens

The first thing to do when we want to use some Screens is to push them on the Screen_Stack. The methods pushScreen(screen_name) and dropScreen(screen_name) are there to manage the Screen_Stack. The only purpose of the Screen_Stack and those methods is to provide a way to order the rendering of the Screens. Also this allows to use only the Screens you need. You can create 10 Screens from the DevEngine but only push and use 3 of them.

Show and Hide Screens

Push a Screen into the Screen_Stack will not make the Screen visible. Pushing is just a way to order the Screen. Any Screen on the Screen_Stack can be make visible or hidden with the methods showScreen(screen_name) and hideScreen(screen_name).

Hide and Show the Game World

The Screens are rendered on top of the Game World, but if you want to show a Screen but not the World like for a Game Main Menu, it's possible to hide and show the Game World with the methods hideWorld() and showWorld().

Find Objects in a Screen

There are two methods to find Objects in a Screen
  • The method findScreenObject(screen_name, object_name) will retrieve any Object that is not a UIObject (Sprite, Animation, Text).
  • The method findScreenUIObject(screen_name, ui_object_name) will retrieve only UIObjects (Button);

Button Object

In addition to the Screen System the Engine now has a little UI Management System. On each Screen it's possible to add some nero::UIObject. Currently the only available UIObject is the ButtonObject.

In order to add a ButtonObject just hold the Shift Key and click on a Sprite_Button. In the DevEngine a Button is simply a Sprite, so you can apply any Sprite transformations on it.

In the future it will be possible to create ButtonObject from Animation and Text. And there will be more UIObject like TooggleButton, CheckBox etc.

A ButtonObject offers three callBacks.

button->setOnMouseEnter( [](){   a lambda function here  });
button->setOnMouseLeave( [](){  a lambda function here  });
button->setOnMouseClick( [](){   a lambda function here   });

By default the opacity (color alpha) of the Buttons change when the mouse comes hover them.

Scenes Util methods

the nero::Scene now offers some cool new methods

//Manage the Scene lifetime
pauseScene()
resumeScene()
resetScene()
quiScene()

//Play with the Canvas Color
getCanvasColor();
getScreenCanvasColor(screen_name)
setCanvasColor(sf_color)

//Manage Logs
log(message, level)
logIf(message, condition, level)
std_function getLog();
std_funtion getLogIf();

//Others
isRenderEngine() //Is the Scene running from the DevEngine or the RenderEngine
isScenePause() //Is the Scene in pause state

What Next ?

I updated the Adventure Scene with some Screens. In the following video you can see the Custom Loading Screen of the Scene, and its different Menus. We are now close to the Engine First Version, but the most important thing remains to be done : Build an actual game.

Now that I have the skeleton of the Adventure Scene set up, It's time to comes up with a Game Play. I think it will be the coolest part of the project  8).

« Last Edit: December 12, 2018, 11:35:10 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #67 on: December 29, 2018, 11:12:30 am »
Engine Update

Hi everyone, how do you do.
Last week I was about to continue working on the Adventure Scene, but something stoped me. I felt that the Engine was missing some key features. So I went to add some features that wasn't in the schedule.

The Scene Renderer

It is now possible to see the final result of your game without leaving the DevEngine. The Engine now has a feature call the Scene Renderer. The Renderer simulates the behavior of the RenderEngine from within the DevEngine.

How to start the Renderer ?
Above the Canvas, along with the buttons Play, Pause etc, there is now a button called Render. Click on this button will launch the Scene Renderer.

Window resolution
From your nero::Scene you can now set the resolution of your game with the method below. This resolution indicates the size of the Window used by the Scene Renderer.
setResolution(1024.f, 600.f);




The Color Picker

The last week I tried ImGUI for the first time, and I was like : ooooooooooooh, waaaaah !!!, this is too too powerfull !!. So I quickly start to learn how it works and decided to integrate its Color Picker in the Engine.

Yeah, now there is a Color Picker  8) . By default the Color Picker is Hidden, but when you go to the Color_Tab it appears automatically.




CodeBlocks Integration

Since the Engine uses CodeBlocks, I thought it would be great if CodeBlocks could generate a sample project for the Engine. So I went to learn the CodeBlocks scripting API, and I created a script that generates a Nero Game Project. Just for info Codeblocks calls that a Wizard, and it uses the Squirrel scripting language.

In the video below you can see the Nero Game Project Wizard in action. There are three types of samples you can generate. The coolest one is called Full Project. When you choose that, you can indicate a Namespace, some Class Names and CodeBlocks will create a complet project to start with.




Release of Version 0.9.0

In two or three weeks I will release a new version of the SDK, it will contains all the updates since the last one (version 0.7.1). The Adventure Scene will be included as an example.

That's all for this post. I think it will be my last post for 2018. So see you in 2019. Have a good day  :)
« Last Edit: January 21, 2019, 11:51:58 am by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #68 on: January 21, 2019, 11:25:36 am »
Nero Game Engine 0.9.0 Released

Hi ! everyone. How do you do. I'm happy to announce the release of the  Engine SDK version 0.9.0

You can download it from the website www.nero-game.com

I tried to upload it several times, my internet connection failed me. But it succeed in the end  ;D.

The Website is still in construction I will work on it on the upcomming weeks and months


Test Scene : The Adventure Scene

In the package there is  a Project called Adventure Scene you can use it as a reference. It's a simple game where you have to collect some coins and some stars.
If you've already tried the version 0.7.1 there are many changes. I have commented the code, so it should be easy to understand what is going on.

Tutorials

In the upcomming weeks I will write some new tutorials. I will upload them on the website in a structured manner.

Nero Game Engine version 1.0

The version 1.0 is comming soon. There are basically three things to be done before to reach that release

   1- Add some game related features (camera shaking, bullet firing and maybe more)
   2- Build a complet game that will serve as a Demo
   3- Run a complet test of the Engine. Track bugs and solve everything that can besolved

That's all, hope you'll enjoy the new SDK. Have a good day  :D
« Last Edit: January 21, 2019, 11:42:53 am by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #69 on: February 10, 2019, 03:13:11 pm »
Engine Update

Hi everyone, how do you do ! here is an Engine update  :).

Bug fix 1 : Duplicate collisions

If you've tried the Adventure Scene, you might have encountered a bug when collecting coins. Some coins can be collected more than once. That's because when a Physic_Object is removed by the Object_Manager, the Physic_Object is not destroyed directly, instead it is marked as dead and removed only when the Engine thinks the time is right. Now there is a control that prevent dead objects to generate a collision.

Bug fix 2 : Crash at Scene Renderer exit

The Scene Renderer crashes sometime when you exit it. This was due to the way resources are shared between the DevEngine and the Renderer. Now the resources shared as been reduced to the strict minimum and the Renderer will run on its own thread.

Bug fix 3 : Player flickering in Scene Renderer

There was a kind of flickering on the player when it moves in the Scene Renderer. It seems the Engine has some trouble rendering the DevEngine and the Renderer at the same time. Now when the Renderer is launched the DevEngine will stop its rendering (only a gray screen will be visible). The DevEngine rendering will come back automatically when the Renderer is closed. With that change the Scene Renderer now performs with the same quality as the nero::RenderEngine.

Download the Update.

You can download the update with the link below. The download contains a folder named Library. Just copy this folder into your current SDK folder and replace all files. The files that will be replaced are the following

   Library/lib/libnero.dll.a
   Library/bin/libnero.dll
   Library/include/Nero/[all files]

Download Engine Update 0.9.01

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #70 on: February 23, 2019, 03:49:54 pm »
Hi everyone, hope you are doing great ! :)

Engine Update

Bug fix : Physic Objects Center of Mass

In the current version of the Engine, Physic Objects (Box2D bodies) don't have their center of mass at the right place. The bug exists since the early versions of the Engine. I did not bother to solve it until now. It's a good thing to have this bug solved because now it's more easy to play with Box2D Joints.

Physic Objects new methods

With the center of mass bug fixed, it's now possible to retrieve the size and the bounds (AABB) of a Physic Object.

vector2f size = physic_object->getSize();
sf::FloatRect bound = physic_object->getGlobalBounds();

Physic Objects Joints

Here is a feature I did not plan to add in the first version, but after I solved the center of mass bug, I said why not ?  ;D

11 Joint Types have been integrated in the Engine API

01- Distance Joint
02- Friction Joint
03- Gear Joint
04- Motor Joint
05- Mouse Joint
06- Prismatic Joint
07- Pulley Joint
08- Revolute Joint
09- Rope Joint
10- Weld Joint
11- Wheel Joint


Create Joints is pretty easy. For each Joint you have a JointProperty object that describes the Joint parameters. The code below shows how to create a Distance Joint between two Objects.

//Retrieve Objects (Physic_Object, Solid_Object or Aniamtion_Solid_Object)
auto object_A = getObjectManager()->findObject("object_a");
auto object_B = getObjectManager()->findObject("object_b");

//Create a Distance Joint
nero::DistanceJointProperty property;
getObjectManager()->createJoint(object_A, object_B, property);

Most of the parameters in a JointProperty depends on of the Joint Type. But all JointProperty has a parameter for the Joint Name.

nero::DistanceJointProperty property;
property.name = "distance_joint_01";

Find Joints

A Joint can be found using its name. The find method return a generic nero::PhysicJoint object. For each Joint Type you have a static Cast() method.

nero::PhysicJoint::Ptr my_joint = getObjectManager()->findJoint("distance_joint_01");

nero::DistanceJoint::Ptr distance_joint = nero::DistanceJoint::Cast(my_joint);

Remove Joints

A Joint can be removed using its name. If the deletion succeed the ObjectManager will return true.

bool removed = getObjectManager()->removeJoint("distance_joint_01");


Release of Version 1.0.0

Seems the time to wrap up the Project and deliver a first version has come. The version 1.0.0 will be released on April the first. Until that I will fix all bugs I can found. Most important I'll need to resit to the desire of adding new features  :o :o :o.

Website and Tutorials

I don't have much time to work on the Engine and the Website now. So I'll focus on the Engine and begin to work on the website after the first version is released.



That's all, have a good day ! 8)


Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #71 on: April 01, 2019, 11:07:49 pm »
Hi everyone, hope you are doing great  ;D

Nero Game Engine 1.0 released

The Engine first version is now released. The SDK can be downloaded on the Engine Website. It was fun to develop the Engine. There are many features that was planned that did not make their way into the first version, But there are also other that was not planned that endup in the first version. I guess  it's how projects work  :)


Website & Tutorials

From now on, I will focus on building the Website, I plan to do some videos tutorial and maybe write some articles on game development.


Nero Game Engine 2.0

Developing the Engine was pretty cool, so I plan to continue with a second version more powerfull. The second version will focus on three things

   1- Cross platform with focus on Androind, IOS and Nintendo Switch (or its successor);
   2- Introduction of Lua as scripting lauguage
   3- A more powerfull Editor and more features in a Scene

« Last Edit: April 01, 2019, 11:59:42 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #72 on: April 21, 2019, 01:05:17 pm »
Hi everyone how do you do ! :)

Engine Update 1.0.1

The Update can be donwloaded from the Website Tools Page

The installation is pretty easy. Just copy the content of the Update Folder into The Engine SDK Folder and choose yes when asked to overwrite the files.

**Important : The Update contains a file called Release. This file describes all the changes, please read this file before to install the Update.

This update is mainly a bug fix

When you render a Scene from the Dev_Engine using the [Render_Button] on top of the Canvas, a new Window opens up with a certain size. This size is specified in your Scene with the code below

void MyScene:init()
{
  //set the Scene Renderer Window Resolution
  setResolution( width, height );
}

The problem ? it does not work   :o  :P

The Update removes the two methods

//Methods removed.
setResolution( width, height );
getResolution();

The Scene Renderer window Resolution is now manage by a new method

sf::Vector2f MyScene::getSceneResolution()
{
  //return the resolution size you want
  return sf::Vector2f( width, height );
}

void MyScene:init()
{
  //nothing to put here. the configuration of the resolution is no longer done in the init() method
}


Engine API Documentation

The Doxygen documentation is now availabled on the Website Documentation Page.
This page is accessible via The Dev_Engine using the button [ Engine API ] on the left.


Nero Game Engine 2.0 Github Branch

A new branch as been created on Github for the Engine second version. While the development of the second version is not a priority now, its design has already begun. You can stay updated to the progress by checking this branch from time to time.
« Last Edit: April 21, 2019, 01:08:10 pm by Sk Landry »

Sk Landry

  • Jr. Member
  • **
  • Posts: 64
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #73 on: July 23, 2019, 03:13:01 pm »
Hello everyone !  :)

Engine Update 1.0.2

The Update can be downloaded from the Website Tools Page

To install, copy the content of the Update Folder into The Engine SDK Folder and overwrite the current files.

The update replaces the files Library/bin/libnero.dll and Library/lib/libnero.dll.a

List of changes
  • Bug: Fix Texture Packer Sprite Sheet Loading.
  • Auto save : remove auto save log message.

 

anything