Jump to content

aesopsystems

Members
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Neutral

About aesopsystems

  • Rank
    On the Coast
  1. aesopsystems

    Graphics / Gameplay Improvements Ideas.

    I had an idea that I saw implemented in the Unity Engine a long time ago. . . I believe it will allow a faster FPS for users within cities and throughout the world. I can't remember the terminology for it as I viewed it about 4 years ago but I think it would improve lag on lower-end computers greatly. Keep in mind, this is a suggestions and to implement this may take a long time as I'm not sure how they have set up their 3d objs and skinning nor do I know the language it is built on but here goes . . . A 3d model is skinned usually with mip-maps and images to make the object look realistic as opposed to the generic grey color usually shown. However a lot of this image loading and skinning can be resource heavy especially with so many different images within DayZ (which I love for its diversity) being loaded as the player progresses through the world. I recognize that textures are sometimes dropped in-game like [texture.bmp, texture.png] could not be retrieved and I believe it may have to do with a stackoverflow or memoryoverflow exception within the code; failing because it has already used more resources than it can handle to load the image. Here is where I forget the terminology but the system to which I'm referring used a point-of-view (pov) based image loading technique to only load the textures the player visually sees. In example, I'm in the middle of the wooods and viewing the trees, but only the images for the front of the trees are shown to me cutting down on the amount of image loading time and increasing fps. Another example, I'm in a building and cannot see much of the outside world, only load the images that are within my visual window. I believe this would help greatly with speed issues. I recently tried this out in 2d game and it worked very well. An idea of how to approach this would be to use simple calculus and the unit circle. Basically I have my players field-of-view which extends from one point (my eyes) to two points in the distance, the right side of my screen and the left. Here's an implementation written in java to extend a point to another point in the distance. Which could be used to get an end point for zooming or field-of-vision config changes. public Point extend_point(int ext, double cur_rotation) {// added 90 because we are pointing down, extension// is multiplied by the cos and added to whatever current x valuefloat sx = (float) (Math.cos(Math.toRadians(cur_rotation + 90)) * ext) + x; // ext is multiplied by the sin of the cur rotation and added to the current yfloat sy = (float) (Math.sin(Math.toRadians(cur_rotation + 90)) * ext) + y;return new Point(sx, sy);} This can be used from the point I'm looking from, (the origin) and extend down the left and right sides creating a cone of vision. Now within this cone of vision you can set up simple collision detection on whether an object is colliding with the bounds of the cone. if the object is past or within the right vector or left vector created by the visual extension of the point then populate an image to it. If it is not leave it unloaded or remove the image completely. This doesn't even have to be updated on each screen update as that would be slow but instead could be called initially when the player rotates or refreshed every 500ms or second. Also you can load an image on something the player sees and if its already loaded use a boolean statement to not load it again. Also, does anyone know what language this is written in? The server-client relationship is pretty good so I'm assuming its python or c because they are solid. Also wondering if the client-sever is udp or tcp, I'm again assuming its tcp with a non-blocking protocol. Just an idea I would like to see added. Please if anyone knows what the dynamic image loading is called please remind me as I want to know. Thanks for reading, -Chris
×