Halomods Community Portal: Complete plugin set for Halo? - Halomods Community Portal

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

H1_PC\Mac
Complete plugin set for Halo?

#1 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 06 December 2011 - 03:11 AM

Does anyone have a complete and proper ent/ifp plugin set for Halo? Most plugins that I've managed to find so far are either incomplete, or just plain wrong.

#2 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 06 December 2011 - 07:32 AM

Why not just switch to CE and edit the game with the HEK?

#3 User is offline   Gary 

  • ¬ 1337
  • Group: Moderators
  • Joined: 05-May 11
  • LocationMelbourne, FL

Posted 06 December 2011 - 07:50 AM

Yeah, you would get tons of better tools and support.

#4 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 06 December 2011 - 08:16 PM

View Postkornman00, on 06 December 2011 - 07:32 AM, said:

Why not just switch to CE and edit the game with the HEK?


Well, I'm not using them to edit the game. I serialize them into C++ structs (plus some relocation code in the case that mmap can't allocate memory at the map's proper address) so I don't have to write any tag-loading code in my tools. I have a few tags that I've completed, but honestly, I really don't have the time or patience to map out all 80+ different tag classes, even if some do inherit from each other.

#5 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 06 December 2011 - 08:44 PM

I have all the Halo1 tag definitions in BlamLib. They're based on data that I extracted from the tools themselves, so they're more correct/accurate than anything else.

Plus one of the new tool commands we added to OS_Tool using Halo1_CheApe was BuildCppDefinition, which generates C code for tag groups that we need in OS.

#6 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 06 December 2011 - 10:29 PM

View Postkornman00, on 06 December 2011 - 08:44 PM, said:

I have all the Halo1 tag definitions in BlamLib. They're based on data that I extracted from the tools themselves, so they're more correct/accurate than anything else.

That's close to what I'm looking for, but I'd like to stay as far away from C# as possible, since it really doesn't play as nice with Halo as C++ does.

View Postkornman00, on 06 December 2011 - 08:44 PM, said:

Plus one of the new tool commands we added to OS_Tool using Halo1_CheApe was BuildCppDefinition, which generates C code for tag groups that we need in OS.

I'll look into it, I don't really have time to look decipher a new codebase right now, but at first glance, I'm not sure if it'll provide me with /exactly/ what I need.

Quick off-topic question: Why'd you choose to write a library to modify halo's engine, when there's (arguably) enough information to portably re-implement (and extend) it?

This post has been edited by xorgasm: 06 December 2011 - 10:29 PM


#7 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 07 December 2011 - 12:58 AM

I'm not suggesting that you use BlamLib with your code, but rather as a reference for the Halo1 definitions.

There really isn't enough information to re-implement it. The tag system is only tiny, tiny piece of the pie. No one has done any exhaustive reverse engineering of any game systems like the AI, UI, sound, effects, particles, etc (OS still only touches the tip of the iceberg). The engine's code has multiple different build configs (game/dedi, tools/editor) plus those configs can be built for either tags or cache, plus the regular debug/release configs. The public only has access to only a few of those builds, so there is still not enough information to fully recreate the game's codebase.

It's far easier to reverse engineer the and extend the game as you go. The game is already built and tested, so you can modify specific systems without having to try and finish writing/documenting other systems.

#8 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 07 December 2011 - 03:09 AM

View Postkornman00, on 07 December 2011 - 12:58 AM, said:

There really isn't enough information to re-implement it. The tag system is only tiny, tiny piece of the pie. No one has done any exhaustive reverse engineering of any game systems like the AI, UI, sound, effects, particles, etc (OS still only touches the tip of the iceberg). The engine's code has multiple different build configs (game/dedi, tools/editor) plus those configs can be built for either tags or cache, plus the regular debug/release configs. The public only has access to only a few of those builds, so there is still not enough information to fully recreate the game's codebase.


I disagree, between the tag definitions, tool.exe, and the main executable itself, I believe there's enough implicit information to implement the core of the game. If that were to be done, the implementation of the rest of the aspects should be obvious (if you have any professional game development experience that is.) I mean, from what I've observed, Halo CE doesn't use any extremely complex ideas or mechanisms to implement any of its subsystems. Any good cs undergrad should be able to recognize what data-structures/algorithms/content management techniques the game uses to implement various chunks of the engine, it's only a matter of applying that knowledge in the context of "how do I use this structure to do X", or "I know this data is used to implement X, how would I implement X with this data?"

I also disagree with the tag system being a tiny piece of the puzzle. The tag system largely defines the input for almost every aspect of the engine. We know the loosely know the expected output, so the guess work is figuring out the function(s) that map that input to the expected output (generally speaking.) And like I said, most of Halo is pretty simple stuff. It's not like they used some crazy alien techniques to create a game that's been surpassed graphically and mechanically many times since its release.

However, yes, the biggest thing that's lacking right now is a proper formal documentation of the core aspects of the engine (i.e. in non code format, ideally in UML or something similar.) All we have right now are scraps of code relating what people have figured out. IIRC, there've been some attempts at documenting the engine, but nothing more complex than "Here's the map header, here's how to load a map, here's how to modify blah". I think the problem is that people just want to change stuff, rather than figure out how the system works as a whole, which isn't a bad thing it's just not useful for this purpose. (Too much micro-vision, not enough macro-vison.)

View Postkornman00, on 07 December 2011 - 12:58 AM, said:

It's far easier to reverse engineer the and extend the game as you go. The game is already built and tested, so you can modify specific systems without having to try and finish writing/documenting other systems.


Just because something's easier to do, doesn't make the alternative option a bad idea ; ] Think about it, if there was an open source re-implementation, the code base could be ported to a whole bunch of different devices (android phones/tablets, PS3, native linux/*nix, hell, maybe if someone's even creative enough, the Wii.) IMO, that'd just be really cool (and super useful on a resume.)

All that being said, it's a lot of work, and not really something I'd really have the time or resources to work on, but I firmly believe it can be done.

#9 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 07 December 2011 - 05:35 AM

Anything can be done given enough time and resources.

*stands up*

I am but one person with a fixed rate of free time. Halo occupies only a portion of that free time. I catered development to what made sense time wise and my audience, which includes not only modders but gamers in general.

Now, let me further refine my initial statement with some culture added:
Anything which isn't protected in some way, shape, or form can be done given enough time and resources.

MS owns the Halo engine. I suggest you learn the extent of which reverse engineered code can be used. What I do may be illegal but it still requires a purchased copy of the game. Reverse engineering the game's code and reimplementing it will only land you in a world ran by devils in suits (ie, lawyers). Especially if you tried to go to a non-MS platform. Halo isn't just some one-off game made by some herp-derp one-game-studio under MGS' belt. It's their bread and butter when it comes to games. They've protected the IP multiple times before and will continue to do so as long as the franchise (or where a lawsuit) turns a profit.

I don't know of any one person who would want to spend their next 10 to 20 years (assuming they held a job that paid enough to keep them healthy afloat and spent some of their free time on other things to keep from going insane) reverse engineering and figuring out the works of 15+ engineers on an engine that is pretty much 10 years old. Even if it's for a resume, I would bet an employer would question their priorities.

#10 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 07 December 2011 - 06:28 AM

View Postkornman00, on 07 December 2011 - 05:35 AM, said:

Anything can be done given enough time and resources.

*stands up*

I am but one person with a fixed rate of free time. Halo occupies only a portion of that free time. I catered development to what made sense time wise and my audience, which includes not only modders but gamers in general.


That's a good point, I'm not in any way asking you to do it. And I do believe it's beyond the extent of what any single person can do. (Although I think your knowledge could help though.)

View Postkornman00, on 07 December 2011 - 05:35 AM, said:

Now, let me further refine my initial statement with some culture added:
Anything which isn't protected in some way, shape, or form can be done given enough time and resources.

MS owns the Halo engine. I suggest you learn the extent of which reverse engineered code can be used. What I do may be illegal but it still requires a purchased copy of the game. Reverse engineering the game's code and reimplementing it will only land you in a world ran by devils in suits (ie, lawyers). Especially if you tried to go to a non-MS platform. Halo isn't just some one-off game made by some herp-derp one-game-studio under MGS' belt. It's their bread and butter when it comes to games. They've protected the IP multiple times before and will continue to do so as long as the franchise (or where a lawsuit) turns a profit.


Well, I'm not saying "I want to reverse the code base directly from machine code to some high level code", rather what I'm saying is, "We know halo uses this format, lets just implement some code that can use that data." As far as I know, if the code is open source and contains no copyrighted MS material (other than public domain stuff), there wouldn't be any legal problems. And if it's not available through any major content distribution network, there shouldn't be any IP issues. (It's really easy [and legal] to develop for the PS3/Android etc... without having an official test unit/setup. Homebrew has come a long way for the PS3.)

View Postkornman00, on 07 December 2011 - 05:35 AM, said:

I don't know of any one person who would want to spend their next 10 to 20 years (assuming they held a job that paid enough to keep them healthy afloat and spent some of their free time on other things to keep from going insane) reverse engineering and figuring out the works of 15+ engineers on an engine that is pretty much 10 years old. Even if it's for a resume, I would bet an employer would question their priorities.

Yes, that's a big logistic problem. The only way that it could be done, is if there was a fairly big (and competent) team, but you'd have to start somewhere. I would argue that halo isn't as complicated as you think. It's all pretty textbook standard stuff (at least by today's standard.) Trust me, if a game company saw that you had enough passion to reverse-engineer and re-implement (at least portions of) a game, that'd add substantial momentum to your application over other people who may be competing for a certain position.

I wouldn't discount the idea yet, I'd rather point out it's flaws and try to find methods to overcome them. That's really what being a software engineer is all about.

#11 User is offline   Gary 

  • ¬ 1337
  • Group: Moderators
  • Joined: 05-May 11
  • LocationMelbourne, FL

Posted 07 December 2011 - 06:43 AM

So, your talking about making a new engine with the same hooks as the Halo engine. So we can load up halo maps in it and extend upon the features that the current Halo engine has?

Sounds cool. But it seems like a lot of work and required skills. You would need a bunch of people who understand the way the Halo engine works and people who can program graphics, physics, networking, AI, etc. that not only look decent but are also compatible with Halo's systems.



To think of it, I think I knew a guy that was working on an engine to load Halo maps... too bad that is likely lost forever.

#12 User is offline   JKN117 

  • Newbie
  • Pip
  • Group: Members
  • Joined: 08-December 11

Posted 08 December 2011 - 04:40 PM

Your just made me go scour the internet for these plugins/tools.

#13 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 08 December 2011 - 08:23 PM

View PostGary, on 07 December 2011 - 06:43 AM, said:

So, your talking about making a new engine with the same hooks as the Halo engine. So we can load up halo maps in it and extend upon the features that the current Halo engine has?

Sounds cool. But it seems like a lot of work and required skills. You would need a bunch of people who understand the way the Halo engine works and people who can program graphics, physics, networking, AI, etc. that not only look decent but are also compatible with Halo's systems.


Yeah, it would be a lot of work, but look at projects like Dolphin or Aleph One, they're huge projects requiring multiple skill sets, and both are pretty successful.

View PostJKN117, on 08 December 2011 - 04:40 PM, said:

Your just made me go scour the internet for these plugins/tools.


Well, like, I can use the tag definitions in OS, it just doesn't fit nicely into my development pipeline. My system takes IFP/ENT plugins (basically just stripping out useless stuff), and does a one time translation into another XML format (which I directly document and modify), which then can either be serialized into C structs, or HTML documentation.

#14 User is offline   kornman00 

  • SourceGuy 2.0
  • View blog
  • Group: Administrators
  • Joined: 15-November 01


Users Awards

Posted 08 December 2011 - 10:28 PM

Aleph One is based on the Marathon code that Bungie released.

Dolphin has over 40 contributors to their project and is about emulation of hardware.

Apples and oranges.

#15 User is offline   xorgasm 

  • Member
  • PipPip
  • Group: Members
  • Joined: 26-August 11

Posted 08 December 2011 - 11:18 PM

View Postkornman00, on 08 December 2011 - 10:28 PM, said:

Aleph One is based on the Marathon code that Bungie released.


Yes, /based/ on the code. They still have a team working on, and improving the engine (I really shouldn't say that, I have no clue what they're actually doing, and I don't care enough to google it.) I haven't looked into it much, but I think their goal was to create some sort of HD o version of marathon or something. That's not the point though. The point is that they have a dedicated team with multiple skill sets, and are actually making progress towards a goal.

View Postkornman00, on 08 December 2011 - 10:28 PM, said:

Dolphin has over 40 contributors to their project and is about emulation of hardware.


Yeah, that's the point. If you've ever written an emulator, you'd know that hardware emulation is an incredibly multifaceted thing, especially trying to emulate recent hardware. For example, you'd likely have W people working on the main PPC JIT core, X people working on the Audio DSP's emulation (most likely people who are familiar with signal processing and sound engineering), and Y people working on graphics(most likely graphic engineers), and Z people doing some other menial stuff like bug fixes etc...

View Postkornman00, on 08 December 2011 - 10:28 PM, said:

Apples and oranges.


Again, that's the point. This saying is often used incorrectly, as it doesn't usually take granularity into account. I mean, what's the point of comparing apples to apples if you're not looking at the little details (details like code, platform, project goal.) Comparing 'oranges to apples' is appropriate in this case because I'm looking at things at a bigger scale (team, required skills, project plan, time, etc..)

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users