• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

121 Neutral

About Emjayen

  • Rank
  1. Graphic anomalies

    Thanks for the prompt replies.     You're right regarding the clip distance and originally tried to reducing it to 1.0f/10000.0f however to no avail. Although I suspect the issue may lie in this area as 10000 still seems awfully large (especially after reading the MSDN D3D9 errata which mentions problems with large near/far ratios) but was required because anything smaller resulted in what was visually a very low draw instance (as in, right in front of the camera)   I've included the source here just in case: http://laserblue.org/Game_src.zip   Relevant code:   Game.cpp:579 <render loop> Game.cpp:389 RenderScene() Game.cpp:92   InitializeD3D() Map.cpp:34 RenderStartup() Map.cpp:54: RenderScene()     EDIT: Nevermind, I figured it out -- it was indeed related to the far clip plane. Thanks for the help guys.
  2. (D3D9)   I've recently begun learning 3D programming and am curious as to the reason for the visual anomalies occuring in my output; I'm not sure how to explain it so I'll just provide the binary: http://wikisend.com/download/559838/Game.zip (sorry for the size)   You'll see what I mean when moving; it occurs on the 'walls'. I'm assuming it's something simple and will be obvious on sight (hopefully)   Also, as I'm from a background in writing isometric engines where drawing order is of paramount importance to get correct results, I find it somewhat unnerving that I can just throw whatever polygons I like at the adapter, in any order, and the resulting output will be correct. Are there any caveats to this line of thinking? (ignoring performance concerns)     P.S., if you find my 'game' familiar, that's because I got bored of manually plotting vertices and decided to reverse an old game I'm fond of.
  3. You're right; a jitter buffer would be a good solution.   There's one optimization to this model that I'd like to implement however I suspect it may be a problem: Given that a large proportional of the frames of input are likely to be empty there would be a considerable amount of wasted bandwidth (e.g, at a rate of 25Hz; 1KB/s of protocol overhead (IP+TCP) alone). Thus, would it be possible to omit this redundant traffic? Assuming that there is minimal jitter I figure the client would be able to set a time threshold for receiving input per frame and if exceeded assume that there was no input during this frame and opportunistically advance the simulation. If the assumption is wrong however it would require reversing the simulation, integrating the missed input, and then somehow fixing the descrepency between the current (errorneous state) and the correct state. I haven't heard of this being done so I'd be interested in hearing in any experiences with such a method.   I should point out that the game in question is effectively a carbon copy of Diablo II; the simulation computation requirement is minimal and thus it would be quite feasible to dump the entire game state (~250KB client-side) per frame (which is something I'm considering for implementing the reversing)
  4. I'm sure this has a name but I'm not entirely sure what it is: Server and client(s) run the same deterministic simulation Clients send input to server Server aggregates input from all clients over period of time Simulation at server [and after propagation, clients] integrates time/input. The reasons I've chosen this model are: To reduce bandwidth requirements and thus also latency (the game involves alot of densely packed units) It's easier to extend and frankly,more elegant than a dumb-client model (assuming the determinism quality can be assured) Enables a more thorough anti-cheating system There are however three main issues I foresee which I'd like some input on:   Firstly, as the simulation client-side will only advance upon receiving a 'frame' of input it will be highly sensitive to network jitter. I believe this could be solved by using the usual latency compensation/hiding techniques.   Secondly, the entire model is predicated on what is essentially a perfect information game thus enabling unscrupulous players to gain information otherwise hidden. Obviously this is not unique to this model but it's exagerated.   Lastly, filtering client input in respect to the relevance of that input to another client (e.g, proximity) would be desireable (for both bandwidth and security) however it's clearly going to raise problems with synchronization. Possibly partitioning of the world-space and have clients only run the simulation for those sectors which are within proximity would be a solution.
  • Advertisement