Jump to content
  • Advertisement
Jemme

Gameplay Game Engine Logic ECS but not really?

Recommended Posts

The storage method for component data is kind of free choice, XML, Json, LUA are fine tbh, i do have a custom BinaryIO class in the low-level engine to read and write binary, i haven't set up endian flip or anything though. A previous project of mine had an asset pipeline tool that dynamically displayed the "import" templates when you selected assets of different types so you could change there settings liek compile as DXT1 etc. It used xml for that, but yeah serializing and deserting in binary is a possible route for the component data, but for now i will probably do it in lua or JSON so i can quickly edit things until i get an editor and automate it. Like Kylotan said i need to just get on with it and refactor and improve things as i go, that's probably the main thing a "junior" needs to learn to do otherwise you get caught up with the thousands of different possibilities and limitations of every possible implementation that you never start.

Share this post


Link to post
Share on other sites
Advertisement
14 minutes ago, Jemme said:

but for now i will probably do it in lua or JSON so i can quickly edit things until i get an editor and automate it

Main difficulty is not a data format. Main difficulty  is automade presistent object system. And most difficult part of it - generating of full reflection data. With reflection data on hand, storage format generation, property editor interface generation and care about big/little endian can be done automatically. 

Share this post


Link to post
Share on other sites
20 minutes ago, Jemme said:

but for now i will probably do it in lua or JSON so i can quickly edit things until i get an editor and automate it

Main difficulty is not a data format. Main difficulty  is automade presistent object system. And most difficult part of it - generating of full reflection data. With reflection data on hand, storage format generation, property editor interface generation and care about big/little endian can be done automatically. 

Also key for real date driving and code reuse is a high level abstractions, but not a data formats. And this abstractions require a deep knowledge of subject field. For examle about any AI aiming, including homing missiles, cannons etc., and most parts of autopilots including nawpoints processing and following of other object, with given accuracy and response delay, can be realised using a set of PID regulators. And each regulator behavior described only by 3 coefficients on his formula. So making those regulators and system of binding it to sensors and actuators allow to avoid tons of scripting and give powerfull oportunities for data driving behavior modeling. Also gives a additional realism, becouse all autoaim sysems, autopilots  and many things on real word aviation and other authomatic works on PID sets. Computers on real world only set tasks to regulators.

13 minutes ago, Jemme said:

Do you mean like this:

Yes something like this. Something like it realized into C++ Builder, but wih opportunity of custom reflection format generation. unfortunately C++ Builder generates reflection info in format good for using/accesing from VCL/firemonkey frameworks. only

Share this post


Link to post
Share on other sites
3 hours ago, Jemme said:

Lumberyard had a talk about reflection I think I'd have to try find it again.

i guess best way to obtain reflection info is to make a code analisis utility that works like preprocessor/transpiller. Reflection info is a parsers dictionry by his nature. unfortunately most compilers just trown it away after buit ASG, instead to place it to data segment tables.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Advertisement
  • Advertisement
  • Popular Tags

  • Similar Content

    • By Helgraves
      Hello!
      I am seeking a few team members to help me run some survival sandbox game servers through a 3rd party hosting site. My goal is to replace "official" servers in the sense that our servers offer the best experience for players of all types (not easy to do!). Why do I need a team for this? Because the game we are working with has far more potential than most people realize - it is my hope that I can bring a better ruleset to the table that focuses more on fun-factor than a genre label.
      My end-game goal is to run quite a few long-term small MRPG servers across multiple games/platforms (platforms of course based on availability of supported server hosting). Personally, I see multiplayer and co-op gamers gravitating towards a more personal experience with small, MRPG servers, as opposed to something like an MMORPG.
      Current Progress:
      Design Document
      Server Patch Notes
      A little about me:
      I took 6 years of high school and have zero college education Zero game/software development experience Hate math, can't code, also can't create any type of art assets Musician of almost 30 years Work on songwriting and music production in a metal band based in my region Only have hobbies for things I'm passionate about, have had some success professionally, with more to come Can I build a toaster, no, but I can tell you exactly how it should work without confusing you That being said, I have made a lot of progress this year on my own - and currently have one server up and running. I am at a point now where I need to construct a small team to help me get my other servers up and running, as well as adding/creating custom content. 
      Currently looking for:
      1-2 x Mod Developers 1 x Server Administrator You must have access to the game we are running our server on, as well as any other tools that are needed to get the job done (like Unreal 4 engine, software development tools, etc.)
      I am more than willing to provide information as requested for anyone interested!
      Thank you for your time,
      Helgraves
    • By Hashbrown
      Hopefully this is a simple question for some of you. I've managed to create a nice fly cam:


      ...but now I'd like to make a standard fps control. If I keep the y axis at 0, I don't fly up or down and I obviously move around at y0, but if I look down, my player slows down. Keep in mind, I'm using my own little engine btw.
      I'm guessing this has to do to the fact that my w,a,s,d forward vectors are calculated using the model matrix which also calculated XYZ rotation. Making a google search, I found this link, but it's an Unreal related question, and on top of that using their graphical blueprint whatever you call it. But it's pretty much the same question and (I'm guessing) possible answer.
      What I think I should do
      Should I make a completely different model matrix that ignores the X and Z axis which I can use for the player's movement? I'm a little confused in what I can do, and I can't find anything on Google that isn't THREE.js or Unity related.
      I'm pretty sure I have to disconnect the look controls from the movement controls. I'd like to be able to move towards where I'm looking without flying up or down, but at the same time be able to apply gravity at some point. But for now, I'd really like to solve that "look down move slow" issue. 
      Thanks all for your support. Below I'll share some of the code I wrote for the movement.
       
      // Controls flyCam(camSpeed) { if (Game.Input.Key.rightArrow.down) { Game.camera.translateX(camSpeed); } if (Game.Input.Key.leftArrow.down) { Game.camera.translateX(-camSpeed); } if (Game.Input.Key.upArrow.down) { Game.camera.translateY(-camSpeed); } if (Game.Input.Key.downArrow.down) { Game.camera.translateY(camSpeed); } Game.camera.transform.rotation.y += Game.Input.Mouse.delta.x * (200.0 / Game.Renderer.width/2) * Game.Time.step; Game.camera.transform.rotation.x += Game.Input.Mouse.delta.y * (200.0 / Game.Renderer.height/2) * Game.Time.step; } // TranslateXYZ translateX (speed) { this.transform.position.x += this.transform.right.x * speed * Game.Time.step; this.transform.position.y += this.transform.right.y * speed * Game.Time.step; this.transform.position.z += this.transform.right.z * speed * Game.Time.step; } translateY (speed) { this.transform.position.x += this.transform.up.x * speed * Game.Time.step; this.transform.position.y += this.transform.up.y * speed * Game.Time.step; this.transform.position.z += this.transform.up.z * speed * Game.Time.step; } translateZ (speed) { this.transform.position.x += this.transform.forward.x * speed * Game.Time.step; this.transform.position.y += this.transform.forward.y * speed * Game.Time.step; this.transform.position.z += this.transform.forward.z * speed * Game.Time.step; } // Model Matrix Mat4.translate(translation, this.position.x, this.position.y, this.position.z); Mat4.scale(scale, this.scale.x, this.scale.y, this.scale.z); Mat4.rotateX(rotateX, this.rotation.x); Mat4.rotateY(rotateY, this.rotation.y); Mat4.rotateZ(rotateZ, this.rotation.z); Mat4.mul(rotateXY, rotateY, rotateX); Mat4.mul(rotation, rotateXY, rotateZ); Mat4.mul(rotScale, rotation, scale); Mat4.mul(model, translation, rotScale); // Update Direction Mat4.transformVec4(this.forward, FWD, model); Mat4.transformVec4(this.up, UP, model); Mat4.transformVec4(this.right, RIGHT, model);  
    • By drcrack
      It is a combination of fundamental RPG elements and challenging, session-based MOBA elements. Having features such as creating your unique build, customizing your outfit and preparing synergic team compositions with friends, players can brave dangerous adventures or merciless arena fights against deadly creatures and skilled players alike.

      More info: https://zealrpg.com/about
    • By Gnollrunner
      I wanted to get some thoughts on player character collisions in MMOs for my project.   As I recall the original Everquest had them, however WoW didn’t. I also remember Age of Conan had them but I’m guessing they were done on the server which was highly annoying because you could collide with things that were unseen. I’m not sure how EQ did them but I don’t remember having this problem in EQ, but it was a long time ago.

      My general idea as to do player collisions on the client side. A collision would only affect a given clients player character as seem from that client. On the server, characters would pass right through each other.  This means that because of lag, two players might see different things during a collision or one may think there was a collision while the other doesn’t, but I figure that’s less annoying than colliding with something you can’t see and everything should resolve at some point.

      There is one more case which I can see being a bit problematic but I think there might be a solution (actually my friend suggested it).  Suppose two characters run to the same spot at the same time.  At the time they reached the spot it was unoccupied but once the server updates each other’s position, they both occupy the same space. In this case after the update, a force vector is applied to each character that tries to push them away from each other. The vector is applied by each client to its own player. So basically player to player collisions aren’t necessarily absolute.

      I was also thinking you could generalize this and allow players to push each other.  When two players collide their bounding capsule would be slightly smaller than the radius where the force vector would come into play. So if you stood next to another player and pushed he would move.  By the vector rules he is pushing back on you (or rather your own client is pushing) but since your movement vector could overcome the collision force vector, only he moves unless he decides to push back. You could add mass calculation to this, so larger characters could push around smaller characters more easily.

      Of course there are griefing aspects to this, but I was thinking I would handle that with a reputation/faction system. Any thoughts?


       
       

  • Advertisement
  • Popular Now

  • Forum Statistics

    • Total Topics
      631371
    • Total Posts
      2999612
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!