I am trying multiple ways in which live previewing could be done, and what the best way to perform this task would be. The first of which I am currently testing (and failing miserably) is via the use of a server client using multicasting to send messages to multiple clients. This opens up opportunities to allow people to contribute to the same project and preview the same results almost instantaneously. People would see changes made in the project by the server using JSON formatted content.
The game client, written in Haxe using OpenFL, would render the JSON formatted content according to the specifications. This approach also opens up opportunities for developing multiplayer faster as well, as a server is already setup to allow people to contribute to the same project, so why not try multiplayer capabilities?
That all sounds great, but the major problem with this approach is that networking code is difficult to optimise. It is even more infuriating to configure and setup. I am in the process of trying to figure out a problem in my C# code that would enable a Socket using an RDM socket with the PGM protocol, but to no avail.
The alternative method is to have two OpenFL projects, one of them being the host, and the other being game content which the host would reload every second or so. This is the simplest approach, but does not offer the same kind of instantaneous feedback servers would, and inherently does not allow for editor feedback.
So… the options I have seem to be:
Create a custom server that talks to each client (the editor and the live host) as means to allow live previewing. The disadvantage being that it involves messy configuration which can turn away developers easily (I am still hanging in there but I’m finding it more and more difficult to determine what the problems are with my C# code)
Use an existing server, such as Node.js, which may take away some of the burden of configuring a custom one but does not present opportunities to allow for more than one person to contribute to the same project should it be a remote one (it’s probably possible but more difficult than the first approach to implement)
Using - for example the Flash target - a live host to reload a library into the host every now and again. I.e. Get the SWF object and embed the local resource
Not ideal, but use HScript to do some work such as drag-and-drop within the live host (instead of in the editor, which is what the editor was initially designed to do).
Unless someone else would like to contribute their own thoughts and ideas on which to enable live previewing and how, what do you think of the already proposed ideas and what would you prefer to see? I would ideally stick to attempting to get a server to work, but as I mentioned, it’s difficult to configure.