Recently I was able to have a conversation with the Principal Engine Programmer of the Halo franchise Team at Microsoft.
She said to me: "I want to know what the community is doing with the Halo PC Engine"
This is no joke. No Troll. I'm very serious as type this. A Employee of Microsoft will be reading this thread.
...So be on your best behavior internet....Please.
I will be watching this thread very carefully also.
Keep it on topic, or I will see your post edited or expunged.
Pump in as much detail as you can in the best way you can. That implys that there should only be one post per person (unless of course...you reach the max, and so make sure you add a post permalink in the multi-posts)
Who knows, maybe if she is impressed enough she can convince higher-ups to let us play with source code, or even get a newer halo engine to play with. That is purely my ever hopeful speculation of course, nothing was promised. It's simply just someone wanting to see what others have done and can do with their own work (and I can't blame her... I would do the same). Nothing more nothing less.
This Thread will be locked sometime on Sunday-Monday, so the sooner you post... the better.
There has been thousands up-on thousands of maps made over the years. It is great that someone is taking an interest in this community, and should also be linked to http://www.halomaps.org . That website is the archive for all custom maps/mods/sp maps ect which is hosted by Dennis who runs the webhostng company.
Two links to some great custom single player maps, and a full blown mod which ups the gameplay and grapics in every way possible. CMT SPv3 - Team leader Masterz1337 Lumoria: Episode Two - Team leader Higuy
Other members of these teams can explain their intentions more and show what they are doing.
I personally just enjoy modeling the Halo designs as I love the art work. But I do plan to make a MP map in the future.
Now that normal maps on dynamic objects like vehicles/weapons and scenery has been enabled, due to an OS Post Processing update by Kornman I believe, I may try and get some current-gen game assets into the engine to make it look it's best. But thats in the future.
Martyn Lee Ball - Some of my work which I want to one day improve and get into the engine.
With tags, you can make a vehicle that floats on water by putting the water friction at 5 (I believe it was anything over 3 refuses to enter water) If you place one of these underwater, you are without doubt, dead.
In ghost style vehicles, if you reduce your physics points to 4, giving each an anti-gravity level of 0.25 (0.25x4=1, negates gravity exactly), and a function block linked to markers above and below, you can fly like a pelican while still having your ghost strafe in Halo 1.
using an item (weapon, vehicle, etc) with two bipeds attached to it, I can create portal guns (in SP, you place with the triggers, MP is flashlight) that work with the ai_look_at_object and objects_can_see_object to act similar as a trigger volume. If you preform this with a vehicle with no physics, it stores the velocity you had when placing it (in the future, could probably have it automatically transfer your own velocity to it)
Having AI sync in multiplayer, is as simple as unchecking the client side stuff in the weapon, setting the bipeds model to invisible, and constantly attaching and detaching a physicsless vehicle to it. The vehicles position syncs so everyone sees the host AI, and that AI's projectiles are shown on everyones screens.
SP doublejump can work by attaching two objects, one whose life monitors if you have already double jumped (could be changed to a global variable I guess, haven't looked at it in years) and a second object constantly shooting at the ground attached to your back. When standing, the projectiles hit the ground, causing a damage effect that can only harm the object that was shooting them. When its destroyed, it treats you as on ground, when you jump and its not killing itself, your inair. While inair, if you press jump again, destroy that second object, and create a damage_effect of only force on your feet equivalent to another jump. Have it sleep_until the one object kills itself (ok, I totally don't see where I used that other objects death.. oh well)
For syncing devices exact positions, I have a collection of around 22 bipeds. update, resync, power, direction, and the rest stand for binary. each biped has a vehicle matching it. When (list_count (players)) doesn't equal the previous value (either new player, quit player, dead player, or respawned player) the host uses (device_get_position <device>) and times that by the total number that can be represended by the number of placed binary bipeds. it goes through killing the correct binary bipeds, and then recreates the update biped. If someone new has joined, there is a startup script that waits until it sees the update biped die, then get recreated, and then applies the newly recovered binary number to the device on their side. When the resync biped is dead, it sets the device power to 0, kills the update biped, waits for that other script to revive it, and then everyone applies that number to their device so everyone is insured to have the exact same location. If power was on before the resync was hit, it would now be reactivated. This can be further upgraded with a third switch, and certain positions where it changes tracks, making you able to have like a real train, and change tracks.
Just by spamming mass permutation changes, bsp change, and weapon changing, can do thermal.
By using the two bipeds like in the above portal gun method, an AI piloted vehicle, and some storage, you can turn halo into pokemon. You go around, use flashlight to attach-detach this piloted vehicle, it goes towards a enemy, when the two bipeds see the enemy, it checks it's life, and sees if that number is within a random range (gotta have catch percents lol) if its caught, the vehicle and biped disapear, and the caught biped is moved to a box outside the map aswell as setting itself to a global (representing a position in your party) even if its not caught, the vehicle leaves. In your pause menu, you have widgets that link to dormant scripts. the script checks the global to see who it's playing with, starts a cutscene off screen, attach-detach's a location marker, teleports the player to that storage box, ai_attach to the player, activates bump possestion, and a command list walks the player into his pokemon. it then moves the ai'd player body, and new player to the location marker with an attach-detach. you are now the pokemon battling while the trainer walks around. If you hit flashlight, it does the same thing to switch you back to the player. You may now catch the weakened pokemon with the players flashlight.
Think you get the idea lol, all kinds of stuff mixing and matching this stuff aswell, like FP legs, forge, etc.
Tell her that I would work for free on expanding the Custom Edition engine (especially if I get to finish some of the ideas that Gearbox promised if we got over 1000 players...). Or even pay them to license the codebase to work on adding the stuff I've done in OpenSauce. I live up here in Seattle, so they can hunt me down if I fail to hold up my end of the bargain. Or I guess I could just email her myself, assuming the contact info I have for her is still valid.
OpenSauce - An open source codebase which contains code for projects that interop and directly modify the various Halo games (including Halo Wars). Currently has support for changing the Custom Edition engine and tools to so various things like adding new script functions/globals, adding new tags, increasing memory limits, new shader postprocessing, etc. There are video links for so
There's also some .NET code for interoping with cache files and tag data. The system is setup to work with all games from Halo1 to HaloReach (including Stubbs The Zombie and the ShadowRun prototype). There's some support for Halo2 Xbox (via a custom system I made for allowing people to write C++ "trainers" for the Xbox1, instead of just bare x86 asm), but I haven't tested it in quite some time (worked at one point!). I've also worked on extensions for the H2V editing kit, mostly just to fix some "missing" Tool.exe commands.
There's some stuff in there for HaloWars as well (another engine I wouldn't mind working with...help me, help you make Halo Wars 2!), but most of my tool code for that (expanding/creating new ERA archives, game saves, etc) is part of a new closed source codebase right now.
I've focused on Halo PC, mainly the server. Over the last year I've been making a server extension called Phasor. It adds numerous features such as map voting, hash based admin, afk kicking, broader map system, game logging, different chat system, the list goes on. One of its main aspects is a scripting system that incorporates Lua. This system lets server host script how they want the server to run. It's made a lot of different things possible. For instance I made an infection gametype with it, others have added a lot of server commands, statistics tracking, imposter prevention (reserves a clan's tags) and anti-cliff systems. I'm currently rewriting the project from the ground up, adding new features in the process. The next version will allow people to spawn objects and possibly reserve server slots. The reserving slots is a challenge because the server has everything hardcoded to 16 players, so I need to temporarily expand it to 17 players so that I can receive the player's hash. I've managed to delay the 'server is full' message, but not by enough to process the hash.
Here's a video of the infection script in action, it's quite old but gets the point across. You can remove weapons etc but I think shotguns are better than melee, especially without any aim assist on melee.
I've also made a few simple programs for the Halo PC client. These include a map manager which remembers servers and then loads the necessary modified map, a gamespy lobby mod so that all compatible servers are displayed (not just your version) and a simple multiclient which lets you run multiple copies of Halo, this is useful for testing stuff on a local server.
Getting my hands on the server's source code would make life a lot easier, although that's probably just a dream.
Last edited by urbanyoung; August 31st, 2011 at 10:20 AM.
Alright I can confirm that INSANEdrivespeaks the truth. (No disrespect but you know the internet these days its best to go to the source)
I took the time to find her contact details and mailed the engineer in question and she was so kind to send me a reply this morning.
Confirming her interest in our community's work related to the Halo PC engine.
I will Quote her here so we cleared this up once and for all:
Sorry, it is not yet time to discuss what this means.
But it is true that I am interested to see what the community is making with the Halo PC engine.
The community is doing beautiful work. Thank you for developing all this, and thank you every one for bringing this to my attention. I will be looking at all of it.
Corrinne Yu
So INSANEdrive +rep to you, now let's make some magic happen on this topic.
Personally I joined quite late in the whole programming and development with Halo PC.
A few things I've been working on in the past.
Stats Console I think the rotating .gif speaks for itself.
Its a client sided statistics tracker that keeps track of your multiplayer scores will you play online.
Added a sound feature to play other multi-kill sounds when you reach kills higher than Killtacular.
Written in C++ and .Net
After a month of learning the ropes and developing Stats Console.
I wasn't too happy with using .Net since it's quite easy to reverse engineering.
I took another 2 months to re-write everything to C++ and additionally have the client sided app send statistics to a database. It was able to detect BlueArrowV2 a hack that shows an arrow above either team. This statistics sending was done over SSL it checked a few memory addresses if certain cheats were being used.
The functionality was quite similar to HaloAntiCheat (www.haloanticheat.com).
But due to maintenance issues I decided not to release this fully C++ app and bought a C++ book instead.
I realized client statistics is not very favorable and decided to move on to an server app.
I approached a programmer called Goemitar aka Omega, who was about to release his first version of a very promising server app called Gandanur. (www.goemitar.com) (He will post a bit later.)
I approached him with the idea of integrating statistics into his server app. He agreed and ever since we've been closely working on getting statistics fully functional for legit players only. With legit players I mean people that actually bought or own a legal copy of the game, pirates are automatically fully excluded.
Thanks to this project I'm able to let my passion loose regarding statistics tracking and providing a competitive platform into a website called HaloRank.com.
Which currently is a large Work In Progress, it will be released when tournaments are fully automated and TrueSkill is implemented.
Currently it contains daily and weekly challenges and Ranks based on cR it won't be long until most features similar to the Xbox360 are fully integrated.
A current postgame carnage as shown on HaloRank fully automated for any server running the statistics app.
A current overview of activity, rank, percentage, players in-game and scores.
So what I mainly do is read memory addresses and store the values from those addresses in either a file or database, since the current gamespy protocol is too limited in its statistics.
Last edited by Sean Aero; September 2nd, 2011 at 01:30 PM.
Show and tell time is it? I'm loving this thread so far because I had forgotten about a lot of these cool accomplishments made over the years. I don't think we give ourselves enough credit at times.
My journey in the community has been interest-based. I tend to work on whatever I feel like at the time, and that has taken me in multiple directions. A lot of work was for teams and others who have already posted here, so I won't show them all again, but I'll highlights some of the things I'm most proud of.
Skyboxes
Revelations
The Pit
Lumoria Episode 1
Lumoria Episode 2 (unfinished)
Precipice
Requiem
Maps
Geomar (unfinished)
Programs
GuiltySpark
GuiltySpark is an automation engine for Halo that can be used to control the player via decision-making scripts, even to the point of creating "intelligent" multiplayer bots.
Gandanur is a server tool that works for both the original Halo: Combat Evolved and Halo: Custom Edition. Currently over 100 servers are using Gandanur. I did a quick check and right now, at the time of this post, more than 400 players are currently playing on a server with Gandanur. The number of players vary based on date and time of course (I'm only able to include counts of the latest gandanur releases - so the actual numbers are a tad higher).
As Sean Aero already mentioned in his post, lately I've been collaborating with him on HaloRank.com. Here Gandanur collects statistics and forwards them to HaloRank. Aside from trying to make cool things, I also put strong emphasis on stability and security, which is an important factor in trying to make the program popular and usable. I'm also working together with HaloAntiCheat.com to detect cheaters (although part of this code is still under development).
The first goal of Gandanur is to extend the server with new fuctionality. This includes:
Ability to vote to skip the current map, and the ability to vote for the next map.
The server can be managed using the Remote Control program. This way you don't need to connect using the halo client to issue commands on the server.
Improved admin management: Admins can be detected based on their cd key hash. An admin can also be assigned a security level and based on that level he/she is allowed to execute certain commands.
It includes a system that allows you to track all the nicknames each player has used on your server.
It fixes small bugs that were left in the original server (player pings not shown in the server query reply, incorrect teams displayed in certain commands, etc).
The next release will include automatic afk and ping kicking,.
Etc etc.
The second goal of Gandanur - and the vision that still drives the development of it - is that it will one day be a platform that people can use the extend the server. Specifically this means that Gandanur will provide a powerfull language such as Python which programmers and modders can use to extend the server. Currently Gandanur is developed with this in mind, and once enough work is done to provide a powerfull enough API which people can use, it will be added to the server tool. This is were halo lack modding tools: The server can't be customized at all (out of the box at least ;).
Gandanur is my main project I work on. I had some problems with the previous webhost so the new website doesn't include all content and information yet.
Sightjacker
The Sightjacker (for HaloPC) allows you to see how a player is aiming. This is used to detect aimbotters.
(Note: This is not a video created by me)
Version Changer
This is a program that allows you to switch between the "bugfix release versions" of HaloPC and HaloCE. The goal of this program is to allow players to use an old halo(ce).exe executable whilst still being able to play on the latest servers. They can now use community created tools that are only compatable with the older halo executable but still be able to play any server.
Other
Does removing the Safedisc v2.7 protection from the older clients, and reversing the CD key verification algorithm also count? Not that I'd ever do something like that, of course! A few years ago I also made a patch that would protect the halo server against an exploit before an official patch was released. And probably a few other small and quick programs I once made.
Bookmarks