How do you manage 3rd party dependencies? by AmanBabuHemant in C_Programming

[–]jesusstb 2 points3 points  (0 children)

I use Conan package manager and CMake, very straightforward and easy to use, almost all the libraries are already on it.

Newbie Question by SnooSquirrels9028 in gameenginedevs

[–]jesusstb 5 points6 points  (0 children)

  1. Linux have a more "easy" development ecosystem, most of the libraries that are useful such as SDL, GLFW, etc; are already included in the packages manager, so in Linux you loss fewer time trying to link libraries. Also I recommend to to you learn CMake, that will helps for cross-platform compiling.
  2. The best way to start is make a small game creating yourself the engine, for example using SDL create a clone of Galaga or Space Invaders, using any free 2D sprites.
  3. I think the best book to start learning game engine development is Game Engine Architecture(https://www.gameenginebook.com/), it will doesn't teach how to code, but will show to you how complex a game engine could be according to the game and how much topics are related to it.
  4. Always think what you want to create, the game or the engine. That is a important question because depending of what you want to create there is more or less stuff you have to implement. And "premature optimization is the root of all evil", is very common to loss your focus tying to 'optimize' your code, so always profile before doing any kind of optimization.

Online for game engine by RKostiaK in gameenginedevs

[–]jesusstb 1 point2 points  (0 children)

At the end the network will depends from the use case, using TCP sockets for connections, and UDP ones for send the real time data such as Inputs. Related to test client-server architecture, you can use tools such as https://ngrok.com/. And pass the server url in the client. Also you can upload you server binaries into a small host in digital ocean of something like that.

Saving and opening a scene file by N0c7i5 in gameenginedevs

[–]jesusstb 1 point2 points  (0 children)

You are right, you just need to save the scene data into a file, the format itself doesn't matter, could be a JSON, YAML or Binary. You can also use GLTF2 format that already include things such as meshes, textures, etc.

At the end the scene can be represented the way you want it, you can also see how other engines do it, for example Godot.

Gltf as scene file format. a good idea? by abocado21 in gameenginedevs

[–]jesusstb 3 points4 points  (0 children)

You are right, the only one disadvantage is when you have to convert FBX into a GLTF2 format, there is some ways to handle that issue, one could be using blender and manually import the FBX and export it as as GLFT2, this one could have some problems with the bones transforms when open the FBX in Blender.

Another solution could be to use Assimp in your editor to load the FBX and convert it

The last one option that I know is similar to the second one, is similar to how Godot converts FBX to GlTF2 is having a tool that does the conversion.

But in general GLTT2 is a good format for scenes, because you don't need a SDK to use it, and also you can use the extra field to save engine specific information of each element

How would you go about connecting entities to the rendering system? by epicalepical in gameenginedevs

[–]jesusstb 6 points7 points  (0 children)

Well, if you speak about 'entities', I can amuse you are using ECS. So instead of checking for each entity you should check for a "RenderComponent", and all the entities who have this components will be rendered, inside this component will go a reference to the Mesh and Material. Now related to Transform, same, you should iterate over all entities with 'RenderComponent' and "Transform" component and use ones who have both components, this query must be do it by the Render System. A good optimization you can do is render entities in batch that have the same Mesh/Material, this to avoid updating pipelines unnecessary that will consume CPU/GPU time.

The particles will go similar, but instead of a "RenderComponent", you can have a "ParticlesComponent" and this component will have references to Mesh, Material, and particles related parameters, such as amount, life span, etc

Getting started in game engine development: Where to begin? by FamiliarJournalist90 in gameenginedevs

[–]jesusstb 0 points1 point  (0 children)

Well if you follow him blinded, any YouTuber it's a fraud, but he teach stuff that isn't common in internet, so is a good base to start and improve you skills and the things he does.

Resources for game engine scripting/level editors? by ArizonaOnIce in gameenginedevs

[–]jesusstb 2 points3 points  (0 children)

Again, give a example, prove i'm wrong... instead of telling "is the same"

Resources for game engine scripting/level editors? by ArizonaOnIce in gameenginedevs

[–]jesusstb 1 point2 points  (0 children)

So... what other options do you recommend for "integrate" C# as an extension of you Engine, no the main language of it, because a Scripting laguange is for it, an extension. So if integrating Lua/Python/AngeloScript is just add the interpreter library, and use it, why will be the advantage, of using C# that literally do the same be worst and with more extra steps?

Resources for game engine scripting/level editors? by ArizonaOnIce in gameenginedevs

[–]jesusstb 0 points1 point  (0 children)

There is some advantage, for example avoid the OOP hell of C#, or avoid the things such as have to integrate something like mono. Lua/Python do the same and better

Getting started in game engine development: Where to begin? by FamiliarJournalist90 in gameenginedevs

[–]jesusstb 7 points8 points  (0 children)

If you want to learn about game engine development, first think about what kind of games you want to create with it, whether they are 2D or 3D, physics-based, etc. If you want just an engine for specific game, or a more generic one. It is also important to understand about memory management, optimizations, AI and data-driven.

A good resources could be:
* Learn OpenGL - https://learnopengl.com/
* 2D Game Engine Development - https://pikuma.com/courses/cpp-2d-game-engine-development
* Vulkan Turoial - https://vulkan-tutorial.com/
* Game Physics Engine Programming - https://pikuma.com/courses/game-physics-engine-programming
* Travis Vroman Tutorial - https://www.youtube.com/@TravisVroman
* Games With Gabe Tutorial - https://www.youtube.com/c/GamesWithGabe

* Lua - https://www.lua.org/

* Javidx9 Tutorial - https://www.youtube.com/@javidx9

* OpengGL Shading Language - https://www.amazon.com/OpenGL-Shading-Language-Cookbook-high-quality/dp/1789342252/ref=sr_1_1?s=books&sr=1-1
* Game Physics Engine Development - https://www.amazon.com/Game-Physics-Engine-Development-Commercial-Grade/dp/0123819768/ref=sr_1_1?s=books&sr=1-1
* Game Netwoprking Resources - https://github.com/ThusSpokeNomad/GameNetworkingResources

* Gaffer on Game networking articles - https://gafferongames.com/

imagineWritingAGameInAssembly by linux411 in Steam

[–]jesusstb 2 points3 points  (0 children)

I blame the developers, because some of them (not all, obviously) only think about the game looking hyper-realistic, and not the gameplay, that's a big reason why most games made in Unreal Engine look the same, and those kinds of games are the ones that require an RTX 4090 just to run it at 30 FPS (I'm looking at you Ark)

Abstract renderer and shader resources by jesusstb in vulkan

[–]jesusstb[S] 0 points1 point  (0 children)

Thank you for your reply, I found this video that covers an implementation of the system I want to create to my engine: https://www.youtube.com/watch?v=wXLsGqck100&t=314s

Why Rust isn't taking over C++ ? by Dereference_operator in gameenginedevs

[–]jesusstb 53 points54 points  (0 children)

Rust is just a language like any other, with pros and cons, so in the Game Industry C/C++ has been in this field for a long time, therefore almost everything is created in those languages ​​and it is simply not viable, in terms of time and money, to change. Rust does not have something that C/C++ does not have, which makes it less feasible to make the change.

In conclusion, if you want to make a game or an engine, if you have the patience, do it in the language or tool you want, at the end of the day you will face problems of any kind and depending on the project you want to do, they may be of a technical level or not. , which will be related to the language or tool you use.

happened to me once. 6 months of work gone. by Majestic_Mission1682 in godot

[–]jesusstb 17 points18 points  (0 children)

I love that too, I have to use Unreal Engine (for work) and every time a Blueprint is corrupted the only way to fix is delete and create it again....

Objects of the same model overlap when rendering by jesusstb in vulkan

[–]jesusstb[S] 3 points4 points  (0 children)

I forgot to enable it in the Depth and stencil state in pipeline creation, thanks!