I got myself signed up for a school project in which I must take an existing 3D online game engine and add voxel terrain to it (in more than one way so as to compare the impact of different implementations on network speeds). Cafu seemed like a good engine to use because it worked right out of the box and also has its network code working nicely from the start, and now it's too late to switch engines even if I thought it would help. My main problem is that I've never worked with anything nearly as complicated as a game engine before, so I'm quite overwhelmed and intimidated! I think I have a general idea of some aspects of functioning that will need to change: It will need to send and receive a new kind of data; it will need to load a new kind of data from files (or from somewhere, at the very least); it will need to consider the new information whenever it processes a scene in any way; and probably many other things I have not yet thought of. But I'm still quite confused as to how to pull all this off, or even where to begin. (I've been considering using every source file's mentions of terrain and heightmaps as a guideline for where modifications might need to occur, but there certainly are a lot of mentions of terrain and heightmaps! What would I even do with those, ultimately? Would I ignore them? Try to write something in parallel to them? Try to pull them out without collapsing the whole engine and stuff something new in the gaps?)
I was basically just wondering if there were any tips on getting something like this off the ground. Anything at all would help, especially from the perspective of someone who knows the engine intimately.
welcome to the Cafu forums!
Well, the details of terrain implementation have no impact on the network at all:
As with many other map primitives like brushes, bezier patches, models, vegetation etc., also terrains are loaded from disk both on the server as well as one the client. That is, like so much else, terrains are "pre-shared" and need not be synchronized over the network.
A good way to get started is the one that you mentioned yourself: Look at all the files mentioning "terrain" and/or "heightmap". You'll then probably have some questions about the details in these files: come back and don't hesitate to post them here.
As you correctly indicated as well, you'll then probably want to implement classes that exist in "parallel" to the existing terrain implementations. (Although for testing purposes, you may also replace or modify the existing terrain classes.)
Users browsing this forum: No registered users and 3 guests