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

Author Topic: Nero Game Engine  (Read 133954 times)

0 Members and 3 Guests are viewing this topic.

NeroGames

  • Full Member
  • ***
  • Posts: 101
  • Build games is simple
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #105 on: December 19, 2021, 01:23:19 am »
I'm still using ImGUI,  The great thing about it, is how easy it let you update the UI, you can remove or add any part of UI at each Frame. This is good for applications where selecting or removing an object updates the UI.

The downside is that it isn't very intuitive, sometimes you don't know where to place items like popups and windows inside your code.

The best UI system would be a traditional UI like (SFGUI and QT) that provide some ImGUI widgets. This way you build your UI traditionally and if part of your UI needs to be updated regularly you use ImGUI just for this part.

NeroGames

  • Full Member
  • ***
  • Posts: 101
  • Build games is simple
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #106 on: January 28, 2023, 04:42:00 pm »
Project Status

Hi everyone, Happy new year.

After a long break, I'm happy to announce that the development of the Nero Game Engine v2.0 as resumed, you will be getting regular updates as usual  :D



Engine Update

Here are the latest Engine updates

# Editor Views

Up until now, all the Editor UI was contains in a single class EditorUI. This approach made it easy to start with ImGUI. But as the Editor grew, it became difficult to manage.

During the past couple of months, I worked to split the UI into multiple small views. And there we got it, All Popups and Windows have been moved into their own class. As of now the Editor is divided into 46 different views, took a long time to create all those classes  ::) :o :o



# Notifications

The Editor is now able to provide notifications after completing certain task. The notifications appear in the bottom right corner of the Editor. By default, each notification last 3 seconds.



Right now, the Editor will notify you when it finishes reloading your game DLLs or when it Auto Save your project.

The Notification API is pretty simple to use, here is some code.
// Default 3 seconds notification timeout
m_EditorContext->getNotificationManager()->notify("A Notification");

// Custom 10 seconds timeout
float timeOut = 10.f
m_EditorContext->getNotificationManager()->notify("A Notification", timeOut);
 



# Create, Compile and Play your Game Level.

Each time you create a new Game Level, a new C++ class will be generated for that level. The Engine Editor is now able to compile, reload and play your Game Level class. A full demo of this will be done in another post.

The button to create a new game level is now located on the Toolbar, right side.



What's Next

While the Editor can play your Game Level class, it's not yet able to generate your game level Scene Graph. Meaning, if you add some Sprites and Animations to your level and hit the Play button, you won't see anything. For the next weeks and months, the focus will be on generating the Game Level Scene Graph.

That's it for this post, have a good day !
« Last Edit: January 28, 2023, 04:47:09 pm by NeroGames »

NeroGames

  • Full Member
  • ***
  • Posts: 101
  • Build games is simple
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #107 on: April 10, 2023, 09:45:26 pm »
Super Update Series - Part 0

Hello everyone, how do you do  8)

Two months since my last post  ::) :o, but no worries. I've been making a lot of progress on the Engine. I got so many updates to present that I've decided to make a Super Update Series, and this is part 0

Current Engine State

First, an overview on the current state of the Engine. The goal of the Engine V2 was to go beyond V1 and bring some cool new features : A more modern Editor Interface, an Editor able to compile and reload your C++ code like Unreal Engine, the possibility to add lights to your Game without effort, the ability to break your game world into small chunks that can be loaded and unload dynamically. As of now, I'm happy to say that the Nero Engine V2 supports all those features. It took a lot of time to build the new Engine Architecture, but we've made it :)

Bringing back the old features

Now that the new Engine Architecture is ready, it's time to bring back some old features, by that I mean: adding game objects to your canvas, play your game within the Editor etc. I've been working on that the last couple of weeks and pretty soon the Engine V2 will cover all the features that were present in V1.

That's all, next time I'll present the new Mesh and Physics System
« Last Edit: April 10, 2023, 09:59:41 pm by NeroGames »

NeroGames

  • Full Member
  • ***
  • Posts: 101
  • Build games is simple
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #108 on: April 10, 2023, 09:52:15 pm »
Super Update Series - Part I : Mesh, MeshEditor and Physics

Hi, welcome to Part I of this Super Update Series, if you've missed Part 0, check out my previous post.

The Meshing and Physics system of V1 is back in V2. The Nero Game Engine 2 fully supports Box2D now. You can add Meshes to your Game Scene, edit them and see them transform into physical object when you play your Game Scene. I discovered some bugs in the meshing system of V1 and fixed them for V2. I also added an extra feature (Vertex Extrusion). You can now extrude any vertex on a Line, Chain and Polygon. Before the Vertex extrusion was working only on the Edges vertices of Lines.

A new Meshing System Architecture.

While on the surface the meshing system works the same as in V1, the internal architecture is no longer the same. V1 uses mainly three classes: nero::Mesh, nero::MeshObject and nero::PhysicObject. The nero::Mesh class was used to represent all four types of Meshes (Line, Chain, Circle and Polygon). In addition, it was storing the physical properties associated to that Mesh. That's a lot for one class.

The nero::Mesh class no longer exist in V2. The new mesh class is the nero::PointMesh, this class only represent Line and Chain Meshes. Polygons and Circles use the nero::PolygonMesh and nero::CircleMesh classes, which inherit nero::PointMesh.

Meshes no longer carry physics data, the nero::MeshObject no longer exist and is replaced by the nero::PhysicsMeshObject. This class store a mesh and the physical properties of your object.

The nero::PhysicObject is now the nero::PhysicsObject (just add an "s"  ;D).

Demo Video

In this demo, I demonstrate the meshing and physics feature of the Engine.



What's next ?
In the next part of this Super Update Series, I'll present the lighting system of the Engine, you'll see how to add lights to your scene and how the light interact with the physics of your level
« Last Edit: April 11, 2023, 08:29:54 am by NeroGames »

NeroGames

  • Full Member
  • ***
  • Posts: 101
  • Build games is simple
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #109 on: April 14, 2023, 06:03:47 am »
Super Update Series - Part II : Lighting

The lighting system

The Engine uses Let There Be Light 2 8) to provide lighting to your Game Scene. The lighting system uses Lightmaps (i.e special texture images) to generate light. Adding lights is very simple, first load your lightmaps, then simply add them to your Scene. The Engine will create some Point Lights based on the lightmaps you've added. The lighting can be enabled or disable at any time during your game.

There are three components in the lighting system

Component One : The background clear Color, which is White. By default, the Engine clears your background with a Black color, but when you enable the lighting, the Engine switches to a White color. You can change the clear Color if needed.

Component Two : The Ambient Light. When you enable the lighting, the Engine automatically adds an ambient color to your Scene. You can think of the ambient color as the Sun. By default, the Engine will use a dark blue color to simulate a nighttime, but you can change the ambient color as you which.

Component Three : Point lights. Point lights are lights you add to your Game Scene using lightmaps. Point lights are represented by a yellow light bubble Icon. You can disable a point light, doing this will turn the light Icon into a Red  light bubble. You can scale up or down the light to change its size and also choose which color the light should be, by default all lights are white.


Light and Physics

All lights (ambient and point lights) interact with the Physics of your Scene. By default, Static Objects will block light and generate a dark shadow. The interaction with Dynamic and Kinematic Objects will be added in the future.

Video Demo

In this video, we build a small Game Scene where we add some Point Lights



What's Next ?

All the Game Objects from V1 are now available in V2 with the addition of the LightObject. In the next post will review all Game Objects available in the Engine : Sprite, Animation, Text, Light, Physics and Solid, PhysicsSprite and SolidSprite, PhysicsAnimation and SolidAnimation.

That's all have a good day  8)

NeroGames

  • Full Member
  • ***
  • Posts: 101
  • Build games is simple
    • View Profile
    • Nero Game Engine
    • Email
Re: Nero Game Engine
« Reply #110 on: May 06, 2023, 10:14:27 pm »
Super Update Series - Part III : Game Objects

Hello, how do you do !?  8)

Wanted to make this update sooner, but the Engine had a big frame rate issue, couldn't render physics, lighting and record I at the same time  :o :o. I had to improve the physics simulation and modify LTBL (Let There Be Light) a little bit.

Game Objects

The Engine currently provides seven (7) Game Objects in its World Builder Mode. Using these 7 game objects, you can build an awesome game level.
  • PhysicsMesh
  • Sprite
  • PhysicsSprite
  • Animation
  • PhysicsAnimation
  • Text
  • LightProb
Once you play your game level, these (7) game objects will transform into different objects at the exception of Sprite, Animation and Text which stay the same. In total, the Engine provides eleven (11) different game objects.
  • PhysicsMesh         -> PhysicsObject
  • PhysicsSprite       -> SolidSprite
  • PhysicsAnimation    -> SolidAnimation
  • LightProb                    -> LightObject
PhysicsMesh

The Engine provides four types of Mesh (Polygon, Circle, Line, Chain). Chains are created out of Lines by adding more vertices. When removing vertices from a Chain, the Chain will become a Line if only two vertices remain.

When playing your game level, a PhysicsMesh will become a Physics object.

Sprite and PhysicsSprite

Adding Sprite Objects is pretty easy, you just have to click on a Sprite in the resource browser window.

To add a PhysicsSprite you have to hold CRTL and click on a Sprite. By default, a PhysicsSprite will come with a Polygon Mesh. To change the Mesh Shape, Right Select the PhysicsSprite and click the mesh shape you want (Polygon, Circle, Line) in the resource browser window.

When playing your game level, a PhysicsSprite will become a SolidSprite object.

Animation and PhysicsAnimation

Animations work the same way as Sprite, click on an Animation in the resource browser window to add an Animation and CTRL click on an Animation to add a PhysicsAnimation.

When playing your game level, a PhysicsAnimation will become a SolidAnimation object.

Text Object

In order to add a Text Object, simply click on the desire font in the resource browser window. If you want to change the font later, simply Right Select the Text Object and click on a different font in the resource browser window.

LightProb

In order to add a LightProb Object, simply click on a lightmap in the resource browser window. A LightProb is made of two parts
  • A Light Icon : Represented as a yellow light bubble when the light enabled (On) and a red light bubble when the light is disabled (Off)
  • A Light Ring : The color of the light ring represents the color of light, by default the ring is white because the default light color is white. The size of the ring updates when changing the scale of the light map used

Video Demo



What's Next

We still have a lot to cover in this Super Update Series, Next time will talk about the improvement made on the Engine Editor Compilation System.

That's all have a good day 8)




« Last Edit: May 06, 2023, 10:18:49 pm by NeroGames »