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

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - NeroGames

Pages: [1] 2 3 ... 7
1
SFML projects / Re: Nero Game Engine
« 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)





2
SFML projects / Re: Nero Game Engine
« 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)

3
SFML projects / Re: Nero Game Engine
« 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

4
SFML projects / Re: Nero Game Engine
« 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

5
Hi, you need to "link" SMFL to your project. There are three things to do


1- In CodeBlocks go to Project/Build options/Search directories/Compiler and add the path to sfml include
folder

2- Go to Project/Build options/Search directories/Linker and add the path to sfml lib
folder

3- Go to Project/Build options/Linker settings, on the left "Link libraries" add the list of sfml libs.
The order is important, look at the picture attached

6
SFML projects / Re: Nero Game Engine
« 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 !

7
Graphics / Re: How to make a functional main menu without headers?
« on: January 04, 2022, 07:55:20 pm »
you can do something like this, you switch between the states in your game loop

enum GameState {Menu, Play, Help}

GameState currentState = Menu;

while(true) //game loop
{
        switch (currentState )
        case : Menu
                inputMenu(); updateMenu(); drawMenu();
               
                if(buttonPlay) currentState = Play
                if(buttonHelp) currentState = Help

        case : Play
                inputPlay(); updatePlay(); drawPlay();
               
                if(buttonMenu) currentState = Menu
                if(buttonHelp) currentState = Help

        case : Help
                inputHelp(); updateHelp(); drawHelp();
               
                if(buttonMenu) currentState = Menu
                if(buttonPlay) currentState = Play
}

8
Graphics / Re: How to make a functional main menu without headers?
« on: January 04, 2022, 07:42:03 pm »
Hello irisetto,

If I get it, you've created three separate projects for each window (menu, help, game), which means you have three software (three executables) each one with its own game loop. If this is the case you are doing it wrong.

1 - You only need one project (one game loop, one executable)
2 - What you are trying to build is commonly called "Games States" and it can be done with a "State Machine" (it's not the only method though :) )
3 - You can search "SFML game state" or refer directly to the source code of SFML Game development book, chapter 5 https://github.com/SFML/SFML-Game-Development-Book
4- A simple solution would be to use "if else" or "switch" statement and draw only what needs to be drawn (menu, help, game)


9
SFML projects / Re: Top Down Soccer/Football game with SFML and BOX2D
« on: December 29, 2021, 05:51:07 pm »
This is awesome, is there a demo to try, are you planning to release it on a platform like Steam ?

10
SFML projects / Re: Nero Game Engine
« 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.

11
SFML projects / Re: Nero Game Engine
« on: December 18, 2021, 01:52:29 am »
Project Status

Hi, how do you do ! I disappeared for a few months  :o. I was busy with school, it was my last semester, had to work on a project and write a lengthy report  :o :o. I'll be back on soon 8).

Happy holidays !


12
SFML projects / Re: Nero Game Engine
« on: August 07, 2021, 05:10:51 pm »
Nero Game Engine v2 Update : Explorer View

Hi everyone how do you do ?

The development of the Engine is progressing very well, I had to rewrite the Mesh Class, took me more time than expected  :).

Scene Graph

At the top of the Explorer view, you now have the Scenegraph. You can use it to browse through all the objects inside the current level.



Game Object Properties

At the bottom of the Explorer view, you can edit the properties of the selected object. I'm still working on this one  8).



Demo video



What's next

It's time to bring back the Mesh Editor, when that's done I'll bring back all game object types : Sprite, Animation, Mesh, Text, Light etc.

13
SFML projects / Re: Nero Game Engine
« on: July 14, 2021, 02:29:14 am »
Nero Game Engine v2 Update : Game Levels (part 3)

Hi everyone! How do you do   ;D?

Building the Game World

It's now possible to add objects into Game Levels and build your Game World. Saving and Loading Levels work fine  8)
The video below shows the full process from creating a new project, adding game levels, and editing the game world



What's next

I'll continue transferring all the features of the First Engine and work on the Editor Interface (Explorer, Edit object properties, etc.)

Current RoadMap

In order to reach the next release, I'll have to complete the following features

  • Building the Game World : Implement all the features of the First Engine regarding the creation of Game World (mostly a lot of work on the Editor Interface)
  • Playing the Game : Make Game Levels playable inside the Editor in real-time like with the First Engine
  • Releasing the Game : Make the Editor generate your final game package with one click :)

That's all have a good day !


14
SFML projects / Re: Nero Game Engine
« on: July 06, 2021, 02:56:31 am »
Nero Game Engine v2 Update : Game Levels (part 2)

Hi everyone!, how do you do  :)

Managing Game Levels

The Engine Editor loads one Game Level at a time, which means it is possible to "Open" and "Close" a Level.

When a Level is opened, it will appear in full orange background in the Level List view (image below, the second level "Gate of Fate" is the one currently opened). Also, the name of the opened Level appears on the bottom left of the canvas.

You can open and close levels manually with the buttons on top of the Levels list view. First, you have to select the level you want by simply clicking on it. Selected Levels have an Orange border. (image below, the third Level "End Gate" is currently selected).



Game Level Resources

Once a Game Level is opened you can access its resources (sprites, fonts, etc). Each Level manages its own resources. The Resource Browser Tab (image below) only show the resources of the currently opened Level

Each time you import resources (sprites, fonts etc.) They get copied in the level  resource directory at Project-Name/Scene/level/Level-Name/resource



What's Next
It is time to start building Game Levels, Next time the Engine will be able to build levels, save them and restore them when the Editor restart.

Have a good day  8).

15
SFML projects / Re: Nero Game Engine
« on: June 26, 2021, 07:14:09 am »
Nero Game Engine v2 Update : Game Levels (Part 1)

Create Game level

It is now possible to create Game Levels with the Engine. On the top right of the Canvas, there is a button "New Level", when you click on it a popup will open up and let you create a new level. The Level View at the button shows you the list of existing levels.



Game Level Directory

When a new level is created, a new directory is also created under "Project Folder/Scene/level/level_name". The directory contains all the data relative to the level : game assets, settings, etc.



Game Level Class

The Engine generates automatically a new class for each level under "Project Folder/Source/Project Name/cpp/level/".

////////////////////////////////////////////////////////////
// Project One
/////////////////////////////////////////////////////////////
#ifndef GATEONEGAMELEVEL_H
#define GATEONEGAMELEVEL_H
///////////////////////////HEADERS///////////////////////////
//Nero
#include <Nero/core/cpp/scene/GameLevel.h>
//Boost
#include <boost/dll/alias.hpp>
/////////////////////////////////////////////////////////////
namespace ng
{
        class GateOneGameLevel : public nero::GameLevel
    {
        public: //Utility
                        typedef std::shared_ptr<GateOneGameLevel> Ptr;

                public: //Factory
                        static nero::GameLevel::Ptr createGateOneGameLevel(nero::GameLevel::Context context) noexcept;

        public: //Scene core
                                                                                GateOneGameLevel(nero::GameLevel::Context context);
                        virtual                    ~GateOneGameLevel() override;

                        virtual void                            init()                                                          override;
                        virtual void                handleEvent(const sf::Event& event) override;
                        virtual void                update(const sf::Time& timeStep)    override;
                        virtual void                render()                                                    override;
    };


    //Class export
        BOOST_DLL_ALIAS(ng::GateOneGameLevel::createGateOneGameLevel, createGateOneGameLevel)
}

#endif // GATEONEGAMELEVEL_H
 

What's next

In my next post we'll talk about managing Game Level assets and World Chunks

Pages: [1] 2 3 ... 7
anything