I have a new plan for Zeus and it's still going to take some work but should be better overall.
Zeus will bring all development of maps and other resources like tags, savegames and gametypes online. The only exception so far will be developing models, which you would need a third-party program to make the .obj file to upload.
Problems resulting in this determination:
- platform dependency, pre-required setup or large resource usage, as in Mac OS X, Windows whatever, Linux or Unix whatever, or whatever other OS's you think of, Java whatever and its scripting and other nonsense like Flash or Macromedia/Adobe whatever
- - the above inhibits features like multi-modding sessions and what-have-you features and usability in general
- other problems i'm too lazy to think about and mention right now
- Zeus will be completely web-based, running on HDM after it has been upgraded to a dedicated server++
- It was fun trying to figure out Objective-C and all, but I'm defaulting back to PHP and web site design which I'll try to keep in my own high standards, so Zeus will be basically a collection of web scripts and stuff for handling Halo-related files
- All the features are the same, but I won't have to do a lot of the platform-dependant coding and will be able to take stock map data that has been reverse-engineered (such as I did with Sparky's Plugins for Eschaton) and work with whatever the modder uploads, or make new maps from "scratch" blank map templates for whatever platform is supported
Basically here's what's gonna happen:
- I'm going to refresh my PHP knowledge and continue analyzing the input and output files and data of the HEK programs and such so that I can write things such as the following example features, making the process something like this in using Zeus:
- Go to a given URL, such as http://zeus.halodemomods.com/
(You'll find out when this is actual functional).
- Log in to access your saved data.
- From the main User Interface in your web browser, you can use one of a number of step-by-step processes for making a new map, join or start a "multi-modding" session, or upload a map or other resource/asset to modify, and use the INCY Online.
The UI will be in the web browser, greatly simplifying things for me in the development process.
What great hurdle is keeping us from making Halo a web-based game? One method would be making Halo into a game which runs on the server as a web script and which is playable in the browser. PHP should be able to handle the code, and the server should be able to handle games of up to eh... 128 players or more per room, based upon the type of processor and internet connection. Flash is normally used for those types of things, but hasn't anyone been able to get OpenGL to work on the web? I've already researched that and it is possible. And besides, you can already do screen-sharing over the internet, so I don't see how this wouldn't be feasible. At the very least, you should be able to share a VirtualHost emulated screen over the net from the server, where the player runs Halo remotely from their computer and plays over the net from their web browser. On the web browser end it would be a straightforward AJAX-type setup, and the game running on the server would be either remote desktop or PHP, or like screen-sharing where you can control the cursor and all that from your client side.
So yeah, the simplest method would be to have remote desktop sharing set up on a virtual host on a remote Mac OS X or Windows server, where all you do is go to the IP address for the web server and log in, then the server gives you a new unique virtual host on the hard drive where you can only open the game and play it, and you control the game remotely from your computer. Then all the connections will be local to the server and the server would essentially be hosting each client who joins. The limitation would really only be the number of ports available (2302, 2303, 2304...) which would be one per player.
EDIT: I tried a number of Virtual Network Client-related applications and they didn't work very well with Halo. The best setup was using Apple's Screen Sharing application and the System Preferences Screen Sharing option. The only issue I found was that the mouse control in Halo was being treated like a joystick and only three buttons of my mouse were being sent over the connection. I tried alternatives and they weren't really worth the time.
This makes me question the efficiency of having the server running multiple instances of the game at a time and sending every screen state over the network. Flash in general is junk so I don't want to touch it with a 10-foot pole. I could look into Ruby or Python like nil suggested, but I still think PHP would be enough.
Either you are groping for answers, or you are asking God and listening to Jesus.