What technical obstacles are actually stopping H2V?

Mar 20, 2013
535
1
0
42
Hawaii
www.h2mt.org
Gamertag
Kills Alone
#21
Yes, essentially that is how we include whatever tags we want. It will load a map, the problem is selecting a different MP map. When I click on Change Map... it crashes.

If I force the scenario path through memory (Cheat Engine or Assembly) it will load. When I go to Pregame Lobby it knows what map is the first, has the preview pic, and will load, so I know that part is working.

I can recreate the crash with the original mainmenu as well, just by modifying those locales, then not only is the text missing in the game but that crash happens in the same spot, this makes me think that those locales offsets and other fields must be set for the map selection to work.


There is a a check for custom maps, perhaps it cannot find that directory, I'm not sure what is causing the crash. I tried disabling the custom maps selection wgit, I've checked many times to make sure if I am missing any other important tags, I do not believe I am.

--

I already have German installed to test this and yes it does cause a few minor issues with Windows so I can understand you not wanting to mess with that, I can test that side of things. I need you to see if you can find out what goes in those locales fields. Here is an example when its compiling:

[offtopic]...packing languages...
...writing language packs to cache...
e: #of strings: 1834 string data size: 41290
j: #of strings: 0 string data size: 0
g: #of strings: 0 string data size: 0
f: #of strings: 0 string data size: 0
s: #of strings: 0 string data size: 0
i: #of strings: 0 string data size: 0
k: #of strings: 0 string data size: 0
c: #of strings: 0 string data size: 0
p: #of strings: 0 string data size: 0
language_packing 0.074000 seconds 41627136 bytes

tag headers and names are 0.23M
streaming tags..............................done
writing tags...done (15065 tags for 19.29M)
total tag size is 19.29M
build_cache_file_add_tags 0.303000 seconds 120896512 bytes
build_cache_file_end_sharing 0.046000 seconds 120896512 bytes
compressing 115.30M...realtime data checksum is 0X4ABCDEF7...done
build_cache_file_write_header_and_compress 0.085000 seconds -1 bytes
successfully built cache file.
total time 158.039000[/offtopic]

So string count for this compile is: 1834, with a string data size of: 41290
Its the remaining values I need. If you can find out how they generate those values, like I get that the offset has to do with the location where it is packed in the map file but I have not been to figure out how they come up with those remaining numbers.

These outstanding fields are: Locale Table Size, Locale Index Table Offset, and the Locale Data Index Offset
Some of which could be zero, if I'm lucky. I noticed many of these numbers are multiplied or divided by 2.


Exhibit A & B:



--


Do you think it would be possible to dump all strings from mainmenu & maybe the exe to a UTF-8 unicode text file somehow?
 

PNill

Lead Dev
Project Cartographer Staff
Oct 25, 2015
99
2
8
Gamertag
TDxPermaNulled
#22
Mar 20, 2013
535
1
0
42
Hawaii
www.h2mt.org
Gamertag
Kills Alone
#23
That is a nice list. But what I need is the contents of those strings, many are easy, they just take time. While some of them include hex characters like so:

[offtopic]238, 144, 136 "<map name>" - EE 90 88 =  - Current MP Map Name
238, 144, 137 "<game type>" - EE 90 89 =  - Game Type - ORIGINAL: Slayer without a lock
238, 144, 138 "<variant>" - EE 90 8A =  - Variant - ORIGINAL: Slayer with a lock, after variant selected
238, 144, 139 "<On>" - EE 90 8B =  - On
238, 144, 140 "<Disabled>" - EE 90 8C =  - Disabled
238, 144, 141 "<vehicle_set>" - EE 90 8D =  - box
238, 144, 142 "<weapon_set>" - EE 90 8E =  - box - ORIGINAL: Normal
238, 144, 143 "<Profile>" - EE 90 8F =  - current reading: Kills Alone - Profile?[/offtopic]
*Hopefully you can see the characters in your web browser

I have restored most of them, but there are those that are hard to find for a few reasons; some are not in the same sections because they were H2v extras, some are nothing but a hex character, and locating some of them is pretty tricky.

As a point of reference, here is what that looks like in: data\ui\screens\game_shell\pregame_lobby\pregame_lobby.txt -UTF-8 Unicode
[offtopic][Strings]
gametype_format= ""<game type>""
mapname_format= "on "<map name>""
coop_campaign= "Coop Campaign"
game_type_coop= "Game Type: Co-op Campaign"
coop= "Co-op"
restart_coop_campaign= "Cooperative"
splitscreen_coop= "Split Screen: Cooperative"
system_link_coop= "Cooperative"
live_coop= "Cooperative"
switch_to_coop= "Switch To: Co-Op Game"
switch_to_coop_help= "Switch to co-op mode. Co-op allows 2 players to play cooperatively through Halo 2 campaign."
coop_help= "Play a cooperative campaign split screen with another player."
gametype_options_format= "Quick Options:"
player_gamertag_clan_format_string= "%s (%s)"
player_gamertag_clan_level_format_string= "%s : %s"
level_format= ""<coop level name>""
difficulty_format= "on "<coop difficulty>""
level_description_label= "Level Description:"
level_description_placeholder= ""<coop level description>""
score_to_win= "Score to Win Round "
score_to_win_title= "Score to Win Round"
score_to_win_header= "SCORE TO WIN ROUND"
score_to_win_description= "Points are earned in Slayer for killing other players. This setting determines how many points are needed to win a round."
on= "On"
off= "Off"
map_default= "Map Default"
starting_weapon_title= "Starting Weapon"
starting_weapon_header= "STARTING WEAPON"
starting_weapon_description= "This settings determines which primary weapon players start the game and respawn with."
header_text= "PREGAME LOBBY"
start_game= "START GAME"
game_setup= "GAME SETUP"
find_game= "Find Game"
game_details= "Game Details"
no_session= "No established session"
not_pregame= "Session not on pregame mode"
need_2_teams= "You must form 2 teams Press  to change teams"<X>""
need_3_teams= "You have too many teams (3 maximum) Press  to change teams"<X>""
need_4_teams= "You have too many teams (4 maximum) Press  to change teams"<X>""
need_5_teams= "You have too many teams (5 maximum) Press  to change teams"<X>""
need_6_teams= "You have too many teams (6 maximum) Press  to change teams"<X>""
need_7_teams= "You have too many teams (7 maximum) Press  to change teams"<X>""
need_8_teams= "You have too many teams (8 maximum) Press  to change teams"<X>""
coop_takes_two= "Playing a co-op campaign requires 2 players on a single PC."
not_squad_leader= "Waiting for  to start the game"<leader>""
waiting_on_squad_leader= " is changing game options"<leader>""
game_start_when_you_get_off_your_ass= "Waiting for you to get off your ass"
game_start_countdown_in_progress= "Game start countdown in progress  Press  to cancel"<timer><X>""
value= ""
not_in_squad= "You need to be in a party"
player_skill_levels_not_available= "Loading stats from Xbox Live..."
skill_maximum_level_spread_exceeded= "Player skill levels are too far apart for this playlist"
squad_can_not_contain_guests= "Guests are not allowed in ranked matchmade games"
squad_too_small= "Your party is too small to enter this matchmaking playlist"
squad_too_large= "Your party is too large to enter this matchmaking playlist"
squad_not_clan_based= "You must be a member of a Clan to participate in a matchmade Clan game"
squad_with_multiple_clans= "Everyone must be in the same Clan to play a matchmade Clan game"
host_bandwidth_too_low= "The host's bandwidth is too low"
missing_content= "You're missing some content. Check that your disc is not dirty"
open= "Party is OPEN"
closed= "Party is CLOSED Profile:  Player:  Vehicle Set:  Weapon Set: "
invitation_only= "Party is INVITE ONLY"
variant_name= "Game Variant"
no_map_selected= "Waiting for  to choose a game"<leader>""
machine_joining= "A new player is joining the party..."
too_many_players_for_bandwidth= "WARNING: You have more players than is recommended for your party's network connections"
observers= "  Observers "<X><arrow left><arrow right>""
allow_observers_title= "Allow Observers"
allow_observers_header= "ALLOW OBSERVERS"
allow_observers_description= "Whe Observers is on players are allowed to be neutral observers. Observers cannot communicate with actual players."
bungienet_user_restriction= "Only registered Bungie.net users can play in the  playlist.\n\rGo to http://www.bungie.net for more information."<hopper name>""
precaching= "Waiting for everyone to load the map..."
precaching_failed= "A player in your party failed to load the map"
precaching_failed_locally= "You failed to load teh map."
no_map_selected_leader= "Press  to choose a game"<X>""
game_start_countdown_in_progress_not_leader= "Game start countdown in progress \r\nPress  to delay"<timer><X>""
countdown_delayed_by_player= " delayed the countdown"<other player>""
countdown_canceled= " cancelled the countdown"<leader>""
team0= "  Red Team "<X><arrow left><arrow right>""
team1= "  Blue Team "<X><arrow left><arrow right>""
team2= "  Yellow Team "<X><arrow left><arrow right>""
team3= "  Green Team "<X><arrow left><arrow right>""
team4= "  Purple Team "<X><arrow left><arrow right>""
team5= "  Orange Team "<X><arrow left><arrow right>""
team6= "  Brown Team "<X><arrow left><arrow right>""
team7= "  Pink Team "<X><arrow left><arrow right>""
button_key_squad_leader_teams_disabled= " SELECT  BACK"<A><B>""
button_key_squad_leader_teams_enabled= " CHANGE TEAMS  SELECT  BACK"<X><A><B>""
button_key_peon_teams_disabled= " BACK"<X>""
button_key_peon_teams_enabled= " BACK"<X>""
button_key_countdown_in_progress= " DELAY COUNTDOWN  BACK"<X><B>""
button_key_countdown_in_progress_cancel= " CANCEL COUNTDOWN  BACK"<X><B>""
none= "None"
5_minutes= "5 Minutes"
10_minutes= "10 Minutes"
15_minutes= "15 Minutes"
30_minutes= "30 Minutes"
60_minutes= "60 Minutes"
120_minutes= "120 Minutes"
i_do_not_agree= "I do not agree"
i_agree= "I agree"
game_cant_start_no_session= "No established session"
youre_leader= "You are now the paerty leader"
player_count= "PLAYER COUNT IN EACH PLAYLIST: "
player_count1= " player in party"<game player count>""
player_count2= " player(s) in party"<game player count>""
player_count3= " player(s) in party"<game player count>""
player_count_e3_placeholder= "Players in Lobby:"
player_count_limit= "16"
round_time_limit= "60"
round_time_limit_title= "Round Time Limit"
round_time_limit_header= "ROUND TIME LIMIT"
round_time_limit_description= "A round can be set to end after a set amount of time has elapsed. Use this to prevent games from lasting too long."
starting_weapons= "Starting weapon: "
weapons_on_map= "Weapons on map: "
motion_sensor= "Motion Sensor: "
motion_tracker= ""<On>""
motion_sensor_title= "Motion Sensor"
motion_sensor_header= "MOTION SENSOR"
motion_sensor_description= "When the Motion Sensor is turned off it no longer detects or indicates movement."
section_general= "General"
view_postgame= "Press Tab or  to review prior stats"<Right Bumper>""
online_single_xbox_pregame_lobby_help= "Did you know Friends can join this party? Press  to open your Friends list and select a Friend to send a party invitation."<Y>""
active_protocol= ""<active multiplayer protocol>""
map_download_progress= "Map download is  done"<timer>""
loading_large_content= "Loading map... % complete..You failed to load the map."<map load percent>""
section_lobby_general= ""
section_lobby_help_text= ""
gametype_options_separator= ": "
status_matchmaking_warning_party_size= "WARNING: Because of the size of your party it may take a while to find a game"
status_matchmaking_warning_wannabe= "WARNING: The lower level player(s) in your party may have a difficult time competing with the higher level players you will be matched against"
lobby_help_party_closed= "Your party is closed, no one will be able to join you. To open the party, open the GAME SETUP menu and press  to change your privacy settings."<X>""
lobby_help_invite_only= "Your party is set to invite only, so no one will be able to join until you send out the invitations. Press the Home key and select a player to send a party invite."
lobby_help_arranged_game= "Only Friends and Clan members can find this party. Press  to send Party Invites. You can begin the game now to play while you wait for others to join."<Y>""
lobby_help_matchmaking= "You can enter matchmaking with Friends and Clan members by forming a party together. Press  and select a player to send a party invite."(Y)""
party_leader= " is the party leader"<leader>""
server_party_leader= "Your Server Party leader"
optimatch= "Matchmaking"
optimatch_description= ""<hopper description>""
player_name= ""<gamertag>""
fake_ui_player= ""
rank_icon= ""
primary_change_color= "Primary Change Color"
switch_to_playlist= "Switch To: Playlist"
switch_to_playlist_help= "Switch to playlist mode. A playlist is a series of pre-defined games you cycle through when you host."
switch_to_custom_game= "Switch To: Custom Game"
switch_to_custom_game_help= "Switch to custom game mode. A custom game is a game you manually set up and host."
switch_to_optimatch= "Switch To: Matchmaking"
switch_to_optimatch_help= "Switch to matchmaking mode. Pick your preferred Xbox Live playlist and get matched with other players."
switch_to_arranged= "Switch To: Custom Game"
switch_to_arranged_help= "Switch to an arranged game. Arranged games are ones where you as the host pick the rules and the players."
current_options= "CURRENT QUICK OPTIONS:"
quick_options_variant_name= ""<game type>""
quick_options1= "Default"
quick_options2= "Custom"
current_map= "CURRENT MAP:"
map= ""<map name>""
current_variant= "CURRENT VARIANT:"
current_level= "CURRENT LEVEL: "
level= ""<coop level name>""
current_difficulty= "CURRENT DIFFICULTY:"
difficulty= ""<coop difficulty>""
current_playlist= "CURRENT PLAYLIST:"
current_hopper= "CURRENT MATCHMAKING PLAYLIST:"
hopper= ""<hopper name>""
in_hopper= "In "<hopper name>""
on_live= "On Xbox Live"
change_hopper= "Change Match Settings..."
change_hopper_help= "Pick a differnt Xbox Live matchmaking playlist to get matched into."
invalid_hopper= "Invalid matchmaking playlist"
0= "0"
1= "1"
2= "2"
3= "3"
4= "4"
5= "5"
6= "6"
7= "7"
8= "8"
9= "9"
10= "10"
11= "11"
12= "12"
13= "13"
14= "14"
15= "15"
16= "16"
key_online= " SELECT  DONE"<A><B>""
key_offline= " SELECT  DONE"<A><B>""[/offtopic]


--


I nulled globals in the original shared.map, otherwise globals (matg) is excluded along with every tag it calls on. Part of my intent is to make a custom shared.map as well, which I have, but that does not work for compiling because it says I am missing the TAG INDEX. So yes, it is possible I am opening one door but closing another, if globals is not removed then the new custom mainmenu.map will fail to load and crash.

So I nulled globals, but I am also replacing it. One more thing to keep in mind, the shared.map that I edit and use for compiling (H2EK) is not the same that I use to run the game (H2PC).


--


EDIT: Inside of the H2EK folders, there is a reports folder, with sub folders for each scenario that has been compiled into a resource map, each has localization_debug.html. Ideally this would contain the values I'm after but its pretty empty.

[offtopic]============================================================================================
tool debug pc 11081.07.04.30.0934.main Aug 24 2007 18:10:17
============================================================================================

Ώ ∞[/offtopic]

This might be something I can re-enable via H2 Sapien or with a switch.


Speaking of Sapien, it should have the ability to use the menu system (wgits and skins) via its interface, but there is a show_hud (0 or 1) command that is locked, even if the command is entered properly it remains set a 0. There is a way to load the main menu scenario from Sapien, I think it would be easier to edit/debug these menus if we could get that working better. Sapien gives a lot of feedback if you turn it on via the debug menu accessed by pressing Start & Back together, I forget the KB combo off the top of my head. I use my own custom debug menu so much of the commands in Sapien can be binded via this menu.

I know its a stretch, but if the game was more editable and even playable via Sapien we might have access to options we never considered. For example, when I would edit various models such as collision the combo of Sapien and Cheat Engine was invaluable.



--


I tried creating a mainmen2.map, essentially a custom menu system within the default main system, or just a map loader sub menu. This loads from the MP menu, but even if I lock the engine mode to MainMenu I cannot see the HUD.
 
Mar 20, 2016
57
1
8
108
#24
I'm glad some sort of meaningful dialogue came out of this thread's creation. Once I'm less busy I'm going to start a project I've been thinking about working on for a while and hopefully contribute to the amount of content this game has.
 
May 29, 2015
830
14
18
25
Teddyland
unitedfalconclan.roflforum.net
Gamertag
UF ShadowTeddy
#26
lol that might not be a good idea then
Someone who PM'd PNill in regards to Project Cartographer (he was learning Programming) had asked if he could help out

Perma shows him the source, doesn't hear from him in days. So a possible outcome to this might mean that you drop programming. Which means that it might not be a good idea to help out if your learning to code :p

Also good to see that your on the forums!
 
May 17, 2016
43
0
6
23
USA
Gamertag
Hold Em5
#27
UF ShadowTeddy said:
lol that might not be a good idea then
Someone who PM'd PNill in regards to Project Cartographer (he was learning Programming) had asked if he could help out

Perma shows him the source, doesn't hear from him in days. So a possible outcome to this might mean that you drop programming. Which means that it might not be a good idea to help out if your learning to code :p

Also good to see that your on the forums!
lmfao yeah I know I would have 0 idea of what any of the source code means xD. Yeah half the people in game speak Spanish so here I actually know whats going on :p

I say yeah too much lol
 
Aug 21, 2020
32
11
8
Gamertag
AmarD
#30
My few cents on it...
  • More people should know about Project Cartographer.
  • More people play it on dedicated servers.
  • More people end up modding for the sake of it.
  • profit...
Obviously I'm not ignoring other people's contribution; it's because of a few guys conviction we have Proj. Cartographer in the first place.
Another unavoidable aspect is the stripped down Halo 2 editing kit; it's also not welcoming at all. Modding for me RN is just poking fun using Assembly. Other people's mods I have utilized, Mousthingy, LAN enabled xlivelessness; they worked great.
IMO we need more guys around.
Maybe we need more FFA tournaments (mighy become easier when ranks are introduced).
For me I think, Mods are what increase the longevity of a game.
There is a sizable community which supports older Bungie games, such as Myth (whose server code was open sourced, and the game binaries were shared with other individuals dedicated to keeping it alive) as well as Marathon 2.
As long as Halo is with Microsoft, the above dream is a far fetched reality.
We want more, but right now we must make do with what we have.
 
Last edited: