Jump to content

Blogs

Pre-Alpha v1.0

The Seventh World is a Medieval Fantasy Survival game, inspired by the likes of Skyrim and ARK Survival Evolved.   It's been under development for the last two years but only in the last eight months has a real commitment been made to it.  Spending every night after work and every other day working on it I've achieved a base from which to build on. The cuboid landmasses are called fragments.  They are arranged as a sphere to make up a planet.  Game-play will eventually include moving from one fragment to another. Each fragment face has a gravity direction toward the center of the land mass.  Each face is known as a World.  The top most face is the First World.  The left, The Second World.  The right, The Fourth World.  The North face is The Fifth World and the South face is The Sixth.  The last face, opposite to the top is The Third World. Each World is separated by an area of weak gravity known as the gravity void, making it difficult to travel between them without the right equipment.  Each world will also have unique features and biome characteristics. In total, there will be approximately 12.5 million square kilometers of explorable terrain.             There is minimal game-play at the moment.  You spawn in one of the procedurally generated towns and the most you can do is; Harvest trees. Drink from the well. Sell/buy items from the shop. Eat equitable editable items. Run around.       What I'll be working on next is fixing the obvious graphics issues.  This will include; Terrain patch seams. Billboard trees and their many issues. Bugs when nearing the gravity void. Distant fragment seams.             The Plan My overall plan is to get this to an alpha stage so it can be released on Steam.  For this stage I want to have the following implemented; VR Multiplayer Building mechanics. Basic Missions. Improved Graphics.   Bug Warning Physics shapes are not releasing and are causing memory usage to increase.   Various other small memory leaks. Crashes in the gravity void sometimes. Feedback and suggestions are welcome.  I hope to have a progress update every one to weeks. Download Here

SpiderPig

SpiderPig

Test Driving on Mars :D

And the screen, really a pain in the ***..... Well, the test drive on Mars, results with just applying the engine to the rear tires, I still feel it jumps a lot, hopefully in the next leadwerks update to get better control of the joints. Let's hope that update is soon. Another thing is that I think it is impossible to reach high speeds, because it starts to bounce a lot. And happy with the OBS video recording program, he doesn't get slow when he makes a video. Translated with www.DeepL.com/Translator  

Yue

Yue

Glass material

Well, it wasn't the desired result, but it's not that it's too bad, the vehicle's glass looks like this, even though it would have been better transparent, but like many things in life, this is out of my knowledge ("shaders") and it's up to us to adapt to what we have.



Yue

Yue

Steering system realized

Among other things, we already have vehicle glass, which is simple but adaptable to the needs. On the steering rims, they can be moved from left to right with their respective rim headstock. The steering is not automatic at the moment, i.e. it does not return to the central axis without pressing the keys, this has to be done manually, and the speed of the steering rotation will have to be in accordance with the speed of the car in motion. Translated with www.DeepL.com/Translator



Yue

Yue

Motivation has returned

The world moves on the basis of motivation, so again we are here with my learning projects to the limit of being able to think that if I am able to make a game, and is that in Leadwerks, everything is much more wonderful thinking about productivity, of course, there can be better things than this engine, but is what I feel most comfortable with.  Well, the project initially involves rolling a car on the surface of Mars, this is thanks to the work that the engine offers in hinge and sliding joints. I have the job done in the best and most efficient way when the shock absorbers and the engine of each tire, the next step is to set the engine of the car, and set the direction of the front tires so that the scout vehicle can turn and move in different directions on the ground.  So I'll see you in more advance.  Translated with www.DeepL.com/Translator

Yue

Yue

And we continue to learn...

When I learned to write, I was made to make the same letters over and over again on a sheet of notebook paper, not far from the idea of doing the same thing over and over again in the case of a vehicle's suspension system, and all related, shock absorber force, mass value etc.    

Yue

Yue

More Work on Shadows

I found and fixed the cause of the cubemap seams in variance shadow maps so we now have nice soft seamless shadows. I also changed the engine so that point lights use six 2D textures instead of a separate cubemap texture array. This means that all light types are sharing one big 2D array texture, and it frees up one texture slot. I am not sure if I want to have a hard limit on number of shadow-casting lights in the scene, or if I want to implement a system that moves lights in and out of a fixed number of shadowmap slots.

Josh

Josh

Three Massive improvements the new engine will make in your life

As I work with the new engine more and more I keep finding new ways it makes life happy and productive. Smart Pointers I have talked about how great these are at length, but I keep finding new reasons I love them. The behind-the-scenes design has been a lot of fun, and it's so cool to be able to write lines of code like this without any fear of memory leaks: LoadSound("Sound/Music/fully_loaded_60.wav")->Play(); What do you think that code does? It plays a sound, keeps it in memory, and then unloads it when the sound finishes playing (assuming it is not loaded anywhere else). Smart Pointers make the new API almost magical to work with, and they don't have the performance overhead that garbage collection would, and they work great with Lua script. User Interface Leadwerks GUI will be used in our new editor, which allows me to innovate in many new ways. But we're also using Visual Studio Code for the script editor, which gives you a sleek modern scripting environment. Better Scene Management Cached shadow maps.are a feature in Leadwerks 4 that separate geometry into static and dynamic shadow-casting types. Static shadows are rendered into a cache texture. When the shadow updates only the dynamic objects are redrawn on top of the saved static cache. This requires that you set the light shadow mode to Dynamic|Static|Buffered. In the new engine this will be automatic. By default lights will use a shadow cache, and if the light moves after the first shadow render, the cache will be disabled. Any geometry can be marked as static in the new editor. Static objects are more optimal for lighting, navigation, and global illumination, and will not respond to movement commands. (This can also be used to mark which brushes should get merged when the scene is loaded). If you don't explicitly select whether an object in the scene should be static or not, the engine will guess. For example, any object with non-zero mass or a script attached to it should not be automatically marked as static. If you didn't understand any of that, don't worry! Just don't do anything, and your scene will already be running efficiently, because the engine makes intelligent choices based on your game's behavior. It's all turning out really nice.

Josh

Josh

Test: Customizable NPC controller

Working out of this subject:   I tested a script for a simple "GoToPoint()" function for a customizable character controller for NPC. This may not be so good as the implemented LE character controller with classic navigation system but it could be promising to use it in open world (so not in much corridored dungeon game!) where the the NPC should crawl or swim or whatever do things as for example underscaled world (thats what I am actually interested in 😁) The NPCs are using an "intelligent" World:Pick() system to find their way. The positive things in this are: - No need nav mesh to be build / free moving system - dynamic way searching so removing a block may let the NPCs go through - swim, crawl, crouch with triggers should be no problem - NPC are not only following a prepared way but they can be thrown as Patrol, choosing randomize positions to go, inside an area. - Scale as you want - The system let the NPC make a little analyse out of the Pick Infos so the way should be a human-logical way   The negative point are: - The path will not be planned so far as allows the actually Navigation Leadwerks System so it is for sure not impossible that a NPC doesn't find the best way to go. This system does definiv not allow a NPC to "know" his way through the entire map. All NPCs are trying to find the best way from the position where they stay at the mooment, so never sure if/what they will find (no return of true/false that let you know the NPC found a way...) (even if this could be solved with "forcing" through a pivot where the way may be too complicated to find...) - The NPCs doen't move "round" but straight from point to point. - For sure more...? 🤔 Here is a little demo: Testing 13.08.2018 20_00_48.mp4    

Marcousik

Marcousik

Bladequest – Introducing the new game

Hi there 🤗 It is very important for me that I only deliver you interesting news and good content and would feel bad, if I don’t. Therefore I created a short survey where you can tell me what you want to get notified about and what not. But for this time I am pretty sure to have interesting news for you. Today I would like to introduce the idea for my next game simply called “Bladequest” which emerges from “The First Chapter”. At the end you also have the opportunity to tell me your thoughts about it, by participating in a short survey. So I recently did all the pre-production and am glad to finally present you all the new concepts and features. So let’s go! 💎 The general idea
In Bladequest you are an adventurer living in a small house, outside in the forest. There are different places where you can travel to at any time. Your goal is to earas much gold as possible, by looting everything you find. Of course there will be a reason you want to do this, but I don’t want to spoil it yet. But the places you visit are not abandoned. Bandits, Skeletons, Goblins and other creatures are getting in your way, preventing you from looting. Every time you visit a place, the number of enemies, their location and the time of day will be different and sometimes you even meet vicious end bosses. Once you purged a place, you need to wait a bit, until you can visit it again, to make more gold. In the meantime you can have a good time spending your money, or go for other adventures. Your gold can be spend for new weapons, equipment and even pets. This promises to be a lot of fun. 💎 New gameplay mechanics I especially made myself a lot of thoughts about this, as this is what makes the game fun! ✔️ Travel to different places ✔️ Buy new equipment & items ✔️ Own Player Home ✔️ Destroyable Objects ✔️ New combat features such as parrying and kicking ✔️ All new loot mechanic ✔️ Hidden treasure rooms 💎 New Sound Design Sound & Music is very important for an immersive and atmospheric game, therefore I want to bring the sound design to a new level! ✔️ Professional soundtrack ✔️ High quality sound effects, especially for combat ✔️ New exciting sound events 💎 Content
A lot of new exciting content is planned. ✔️ More enemy types ✔️ More weapons ✔️ More places, including exterior scenes 💎 AI The AI of the First Chapter is one of the first complex AIs I wrote and I got some critics on it, but because I have more experience now and due to the revised systems I believe to be able to fix this issue. ✔️ Smarter AI ✔️ More immersive behavior (e.g. different Idle behaviors) ✔️ More dangerous ✔️ Special enemies, behaving differently 💎 Design & Graphics
The main focus for Bladequest is to make it as performant as possible. I will also fine tune the graphics, work on the models and animations to give the graphics the final touch. Because Bladequest introduces many new features and mechanics I will also revise the UI design. ✔️ New effects like SSAO ✔️ New UI Design ✔️ Revised Models & Animations 💎 System Optimization I am revising nearly all of the systems, bringing them to a whole new level. This includes the UI System, Rendering, Animations, AI, Sound and so on. ✔️ Better Performance ✔️ More Stability ✔️ Allows more complex features ✔️ Save & Load mechanic That’s it so far. Keep in mind that all of this is a work in progress. Not all ideas or features may find their way in the game, but I am very optimistic and can’t wait to make them come true. I am very excited about this game myself and I really mean it, I want to play it NOW! What about you? Tell me your thoughts in this short survey, can’t wait to hear what you think. Stay cool! Markus from Phodex Games 💥 Get Bladequest: The First Chapter on Steam
✔️ Give Feedback for Bladequest: The First Chapter
🎬 Offical YouTube Channel

Phodex Games

Phodex Games

Test Joint Hinge Spring System Car

Well, I understand that SetSpring only seems to work with a sliding joint, as it breaks the hinge at its limits and does not work. I guess pretty soon in the official version of 4.6 this is going to be fixed.  The idea is to implement the spring, but you have to wait, or at least try with a sliding joint.

   

Yue

Yue

Spring work completed

I finished the spring work on the car's chassis. The work is done thanks to the hinge joints that have been put in place. When the skeleton of the car is suspended with all its parts, the four springs are lowered a little thanks to the force of gravity. The next step is to introduce the springs of the shock absorbers in the right place with the idea of simulating a real car suspension.  The truth is this is learning by doing with this experiment.  Translated with www.DeepL.com/Translator

   

 

Yue

Yue

Turbo Game Engine Beta Update

The Turbo Game Engine beta is updated! This will allow you to load your own maps in the new engine and see the speed difference the new renderer makes. LoadScene() has replaced the LoadMap() function, but it still loads your existing map files. To create a PBR material, insert a line into the material file that says "lightingmodel=1". Blinn-Phong is the default lighting model. The red and green channels on texture unit 2 represent metalness and roughness. You generally don't need to assign shaders to your materials. The engine will automatically select one based on what textures you have. Point and spot lights work. Directional lights do not. Setting the world skybox only affects PBR reflections and Blinn-Phong ambient lighting. No sky will be visible. Physics, scripting, particles, and terrain do not work. Variance shadow maps are in use. There are currently some problems with lines appearing at cubemap seams and some flickering pixels. Objects should always cast a shadow or they won't appear correctly with VSMs. I had to include glew.c in the project because the functions weren't being detected from the static lib. I'm not sure why. The static libraries are huge. The release build is nearly one gigabyte. But when compiled, your executable is small. #include "Leadwerks.h" using namespace Leadwerks; int main(int argc, const char *argv[]) { //Create a window auto window = CreateWindow("MyGame", 0, 0, 1280, 720); //Create a rendering context auto context = CreateContext(window); //Create the world auto world = CreateWorld(); //This only affects reflections at this time world->SetSkybox("Models/Damaged Helmet/papermill.tex"); shared_ptr<Camera> camera; auto scene = LoadScene(world, "Maps/turbotest.map"); for (auto entity : scene->entities) { if (dynamic_pointer_cast<Camera>(entity)) { camera = dynamic_pointer_cast<Camera>(entity); } } auto model = LoadModel(world, "Models/Damaged Helmet/DamagedHelmet.mdl"); model->Move(0, 1, 0); model->SetShadowMode(LIGHT_DYNAMIC, true); //Create a camera if one was not found if (camera == nullptr) { camera = CreateCamera(world); camera->Move(0, 1, -3); } //Set background color camera->SetClearColor(0.15); //Enable camera free look and hide mouse camera->SetFreeLookMode(true); window->HideMouse(); //Create a light auto light = CreateLight(world, LIGHT_POINT); light->SetShadowMode(LIGHT_DYNAMIC | LIGHT_STATIC | LIGHT_CACHED); light->SetPosition(0, 4, -4); light->SetRange(15); while (window->KeyHit(KEY_ESCAPE) == false and window->Closed() == false) { //Rotate model model->Turn(0, 0.5, 0); //Camera movement if (window->KeyDown(Key::A)) camera->Move(-0.1, 0, 0); if (window->KeyDown(Key::D)) camera->Move(0.1, 0, 0); if (window->KeyDown(Key::W)) camera->Move(0, 0, 0.1); if (window->KeyDown(Key::S)) camera->Move(0, 0, -0.1); //Update the world world->Update(); //Render the world world->Render(context); } Shutdown(); return 0; }

Josh

Josh

Working on vehicle suspensions

The idea in my head is usually very simple, the point is to be able to make it work in the engine and be viable for even a game.  

Yue

Yue

The rim suspension

In the following picture I show the squares where the vehicle is supposed to have hinge joints ("red squares"), and the red circles of slider joints. In essence I have to split the model into several parts, the spring, the bodywork, the spring and the rim. It should be noted that this model is taken from Yobi3D so all credits are from the respective author. 
 
 

Yue

Yue

The forklift project is impossible.

I don't know what to think, it seems that I can't carry out the forklift project, the problem lies with the pallets and their collider, it presents me with problems with the tires or some other element where everything goes flying, I thought for a moment that I had solved it, but this doesn't work. If I put in another type of collider I have no problem, but I can't put in the fork of the forklift to lift the pallets.
Translated with www.DeepL.com/Translator
   
And now what's next, learning is interesting, I especially enjoy trying to understand how things work, I could leave the forklift without a shovel, but I want to learn how to make a real suspension with just a four-wheeled vehicle, a spring, the shock absorber and the tire. And we're gonna try if I get that. Translated with www.DeepL.com/Translator



Yue

Yue

Eureka!!

I have found a solution to the pallet issue, the result was to test again and again the possible configurations in terms of mass and collision types, the physics is not perfect, but I have to settle for it being just a game. Since I have to increase the mass of the pallets above the mass of the rims, although wood usually has less mass in real life than a tyre, well that's what I think, because when the chassis collides with the pallets it runs with a lot of effort, but I repeat nothing is perfect, but I'm happy with the result.   Translated with www.DeepL.com/Translator          

Yue

Yue

Demo Game A forklift truck .Exe

Well, the game is about getting over the paddles, and you're lucky that not everything doesn't go flying like in horror movies. This is more like a test to see if this doesn't happen on another computer. 




Download
https://www.dropbox.com/s/hy1is9evhwxwria/Montacargas.rar?dl=0

Keys : W, S, D, A . Vehicle movement. Classes : Q, E. Raise and lower the camera. 
Free camera: Mouse and arrow keys.  Operating system, Windows 10 (development operating system)  

As a novelty, I was able to compress the executable and some libraries, so that it doesn't take up too much space. And the game data is saved in an iso file. 

Yue

Yue

Test Driving new Vehicle. :D

Everything is a learning experience, at least I can already aspire to a diploma specializing in sliding joints, hinges and spheres. In the end, practice helps to improve our skills.  Well, the newly created car system, this time was very easy and in less time, the next test I do will be to create a paddle and let the tires step on it, if this bounces like crazy, no way, I will have to think about a game that does not lift boxes but a circuit not to crash traffic cones. Translated with www.DeepL.com/Translator      

Yue

Yue

Next Steps

I've got the basic GI algorithm working but it needs a lot of work to be correct. I tend to do very well when the exact outcome is well-defined, but I am not as good at dealing with open-ended "artistic" programming. I may end up outsourcing the details of the GI shader to someone else, but the underlying data management is solid enough that I am not scared of it anymore. There's a lot of aspects of the design I'm not scared of anymore. We worked out smart pointers (including Lua integration), physically-based rendering, and most importantly the crazy ideas I had for the super efficient architecture work really well. At this point I think I am going to put the GI on hold, since I could play around with that endlessly, and focus on getting a new build out to the beta subscribers. We're going to just use a single skybox for ambient and specular reflections right now, and when it's ready GI and environment probes will provide that.  After that I think I will focus on the physics and navigation systems, exposing the entire API to Lua, and getting some of the outsourced work started. There's a few things I plan to farm out: Visual Studio Code Lua debugger GI details Weather system Water and clouds systems Everything else is pretty well under my control. This started out as an idea for an impossible design, but everything has fallen into place pretty neatly.

Josh

Josh

Stage 2 of the forklift truck

It is incredible to do things when you know what you are doing very well, the problem is when something happens that according to our logic is wrong to happen.  Well, I've rebuilt the whole system of tires and shock absorbers, what I learned at the new moment is that I know how to manipulate the center of gravity of the vehicle, without having to go to the modeling program and change the position of the model, only a simple pivot is the father of the vehicle chassis, that the correct position is this.  Translated with www.DeepL.com/Translator

And the stability point is perfect compared to the previous project.
And here's a simple tire script. It should be noted that I have learned to perform a private function with Script:Funtion :), or at least I already understand that.


  Script.chassis = nil --entity "Chassis" Script.llanta = nil --entity "Llanta" function Script:Start() self:InitAmortiguador( self ) self:InitMotor( self) end function Script:InitAmortiguador( self ) self.pos = self.entity:GetPosition() self.amortiguador = Joint:Slider( self.pos.x, self.pos.y, self.pos.z, 0, 1, 0, self.entity, self.chassis ) self.amortiguador:EnableLimits() self.amortiguador:SetLimits(-0.03, 0 ) self.amortiguador:SetSpring(3000) self.amortiguador:EnableMotor() self.amortiguador:SetTargetAngle(-10) end function Script:InitMotor( self) self.pos = self.llanta:GetPosition() self.motor = Joint:Hinge( self.pos.x, self.pos.y, self.pos.z, 0, 0, 1, self.llanta, self.entity ) self.motor:DisableLimits() end function Script:UpdateWorld() if window:KeyHit( Key.J ) then self.chassis:AddForce(0, 500*12, 0 ) end end  

Yue

Yue

×