https://www.youtube.com/watch/?v=vzDy11YsLIE
ABOUT SILENCE
Silence is a culmination of my existing Zeus experiments towards designing an HEK for Mac. Silence is the Halo Editing Kit for Mac.
As usual, I started with .actor HEK tag file support. Development is accelerated because of the modular approach I am using.
Silence works with OS X 10.11. I experimented with a bit of converting silence to work with Mac OS X 10.6.8, and it seems right now like a simple conversion, so I intend to make a build compatible with Snow Leopard.
Silence contains some useful features, but I did not give it the extensive suite of controls that I designed in Zeus, such as duration and angle displays.
This program is my definitive Halo editor for Mac and Windows. It uses all of my original work, with the occasional bit of code from web sites like Stack Overflow; the development of silence was a learning experience. This build for OS X 10.11 uses Auto Layout with constraints, a lot of Cocoa bindings, and in general should be kind of sophisticated in the approaches used with Objective-C. I still plan to do a version for Windows 7, but of course this should be finished first for Mac.
CURRENT FEATURES
- dynamic language translation in the interface; simply choose the language of preference and the related language plist file is loaded and the interface redisplayed (currently only English, but contact me if you would like to translate into Spanish, etc.)
- a Halo trivia mini-game to which you can add your own questions and answers by adding them to the plist file
- display measurements in world units or meters, and angles in degrees or radians
- more informative tool tip mouseover text than appears in Guerilla
- all bytes from every Halo tag file are displayed and editable
(silence vs. Guerilla)
- automatic correction of inappropriate tag data... in other words, you get automatic tag file fixing for compatibility with the Halo Editing Kit. No more tag or map file data corruptions!
PLANNED FEATURES
Of course, I intend to design additional "instantaneous" features which do not utilize a heavyweight user interface. And then there are future features like anything having to do with 3D display or asset extraction.
WHAT TO EXPECT
What all of this means is that possibly by the end of this year, silence will be a one-stop replacement for every single Halo editing program for Mac -- no more Eschaton, swordedit, or other miniature side projects. Silence will be the Halo modding application to use.
Concept art for the main map editing user interface. The black area is the 3D view of the game level, the top right is the area where you navigate tags in the map, and the bottom right is where you edit the selected tag:
SOURCE CODE RELEASE
Once silence is finished, I might release the source code. Included with the source code are C files that replace all my former published source code files, including the Zeus Retribution Library (retribution.h). And this most definitely is maybe 3 or 4 complete reverse engineering attempts past what I did with my Eschaton plugins.
Here is an example from my halo_definitions.h, which is, say, 7000 lines of code:
Code: Select all
#pragma mark - Tag Classes -
#pragma mark actr
struct halo_actr_section_perception
{
float maximum_vision_distance;
float central_vision_angle_rad;
float maximum_vision_angle_rad;
uint8_t pad_1[4];
float peripheral_vision_angle_rad;
float peripheral_distance;
uint8_t pad_2[4];
struct halo_vector_3d standing_gun_offset;
struct halo_vector_3d crouching_gun_offset;
float hearing_distance;
float notice_projectile_chance;
float notice_vehicle_chance;
uint8_t pad_3[8];
float combat_perception_time;
float guard_perception_time;
float non_combat_perception_time;
// 3 calculated float values, 0 until compiled, compiled defaults:
float unknown_1; // 0.0555556
float unknown_2; // 0.0238095
float unknown_3; // 0.0166667 or 0
};
struct halo_actr_section_movement
{
float dive_into_cover_chance;
float emerge_from_cover_chance;
float dive_from_grenade_chance;
float path_finding_radius;
float glass_ignorance_chance;
float stationary_movement_distance;
float free_flying_sidestep;
float begin_moving_angle_rad;
};
struct halo_actr_section_looking
{
uint8_t pad_1[4];
struct halo_angle_2d maximum_aiming_deviation;
struct halo_angle_2d maximum_looking_deviation;
struct halo_angle_delta non_combat_look_delta;
struct halo_angle_delta combat_look_delta;
struct halo_angle_2d idle_aiming_range;
struct halo_angle_2d idle_looking_range;
struct halo_ranged_float event_look_time_modifier;
struct halo_ranged_float non_combat_idle_facing;
struct halo_ranged_float non_combat_idle_aiming;
struct halo_ranged_float non_combat_idle_looking;
struct halo_ranged_float guard_idle_facing;
struct halo_ranged_float guard_idle_aiming;
struct halo_ranged_float guard_idle_looking;
struct halo_ranged_float combat_idle_facing;
struct halo_ranged_float combat_idle_aiming;
struct halo_ranged_float combat_idle_looking;
uint8_t pad_2[8];
// calculated values, 0 until compiled: 3 unknown values of the same data (0xb33bbd2e) followed by 1 float value of 0.5
uint32_t unknown_1;
uint32_t unknown_2;
uint32_t unknown_3;
float unknown_4;
struct halo_dependency d1_do_not_use; // weap
uint8_t pad_3[268];
struct halo_dependency d2_do_not_use; // proj
};
struct halo_actr_section_unopposable
{
enum halo_danger_level_triggers unreachable_danger_trigger_list;
enum halo_danger_level_triggers vehicle_danger_trigger_list;
enum halo_danger_level_triggers player_danger_trigger_list;
uint8_t pad_1[2];
struct halo_ranged_float danger_trigger_time;
int16_t friends_killed_trigger;
int16_t friends_retreating_trigger;
uint8_t pad_2[12];
struct halo_ranged_float retreat_time;
uint8_t pad_3[8];
};
struct halo_actr_section_panic
{
struct halo_ranged_float cowering_time;
float friend_killed_panic_chance;
enum halo_actor_types leader_type_list;
uint8_t pad_1[2];
float leader_killed_panic_chance;
float panic_damage_threshold;
float surprise_distance;
uint8_t pad_2[4];
};
struct halo_actr_section_defensive
{
uint8_t pad_1[24];
struct halo_ranged_float hide_behind_cover_time;
float hide_target_not_visible_time;
float hide_shield_fraction;
float attack_shield_fraction;
float pursue_shield_fraction;
uint8_t pad_2[16];
enum halo_crouch_triggers defensive_crouch_type_list;
uint8_t pad_3[2];
float attacking_crouch_threshold;
float defending_crouch_threshold;
float minimum_stand_time;
float minimum_crouch_time;
float defending_hide_time_modifier;
float attacking_evasion_threshold;
float defending_evasion_threshold;
float evasion_seek_cover_chance;
float evasion_delay_time;
float maximum_seek_cover_distance;
float cover_damage_threshold;
float stalking_discovery_time;
float stalking_maximum_distance;
float stationary_facing_angle_rad;
float change_facing_stand_time;
};
struct halo_actr_section_pursuit
{
uint8_t pad_1[4];
struct halo_ranged_float uncover_delay_time;
struct halo_ranged_float target_search_time;
struct halo_ranged_float pursuit_position_time;
int16_t num_positions_coord;
int16_t num_positions_normal;
uint8_t pad_2[32];
};
struct halo_actr_section_berserk
{
float melee_attack_delay;
float melee_fudge_factor;
float melee_charge_time;
struct halo_ranged_float melee_leap_range;
float melee_leap_velocity;
float melee_leap_chance;
float melee_leap_ballistic;
float berserk_damage_amount;
float berserk_damage_threshold;
float berserk_proximity;
float suicide_sensing_distance;
float berserk_grenade_chance;
uint8_t pad_1[12];
};
struct halo_actr_section_firing_positions
{
struct halo_ranged_float guard_position_time;
struct halo_ranged_float combat_position_time;
float old_position_avoid_distance;
float friend_avoid_distance;
uint8_t pad_1[40];
};
struct halo_actr_section_communication
{
struct halo_ranged_float non_combat_idle_speech_time;
struct halo_ranged_float combat_idle_speech_time;
uint8_t pad_1[176];
struct halo_dependency d1_do_not_use; // actr
uint8_t pad_2[48];
};
struct halo_actr
{
struct halo_actr_flags_bf flags_bf;
struct halo_actr_more_flags_bf more_flags_bf;
uint8_t pad_1[12];
enum halo_actor_types actor_type_list;
uint8_t pad_2[2];
struct halo_actr_section_perception perception;
uint8_t pad_3[8];
struct halo_actr_section_movement movement;
struct halo_actr_section_looking looking;
struct halo_actr_section_unopposable unopposable;
struct halo_actr_section_panic panic;
struct halo_actr_section_defensive defensive;
struct halo_actr_section_pursuit pursuit;
struct halo_actr_section_berserk berserk;
struct halo_actr_section_firing_positions firing_positions;
struct halo_actr_section_communication communication;
};
Like with the Zeus forum topic, I'll give a status update list, so you can be appraised of the development track. I'm starting this list after having already completed the .actor tag file reading/display functionality. Undo/redo functionality and saving to disk remain to be developed.
Given the modularity of things, it is too quick and easy for the development to separate each file format into reading and writing and interface, so I'll simply colorize green the file formats that are considered fully complete, as far as reading, writing, and arith-- I mean, displaying in the user interface. Green means that a file can be opened, displayed to the user, modified by the user with undo and redo functionality, and saved back to disk.
MOST RECENT VIDEO DEMONSTRATIONactr / .actor / Actor
actv / .actor_variant / Actor Variant
ant! / .antenna / Antenna
antr / .model_animations / Animations
bipd / .biped / Biped
bitm / .bitmap / Bitmap
boom / .spheroid / Spheroid
cdmg / .continuous_damage_effect / Continuous Damage Effect
coll / .model_collision_geometry / Collision Model
colo / .color_table / Color Table
cont / .contrail / Contrail
ctrl / .device_control / Control Panel
deca / .decal / Decal
DeLa / .ui_widget_definition / UI Widget Definition
devc / .input_device_defaults / Input Device Defaults
devi / .device / Device
dobc / .detail_object_collection / Detail Object Collection
effe / .effect / Effect
elec / .lightning / Lightning
eqip / .equipment / Equipment
flag / .flag / Flag Cloth
fog / .fog / Fog
font / .font / Font
foot / .material_effects / Material Collision Effects
garb / .garbage / Garbage
glw! / .glow /Particle Glow Effect
grhi / .grenade_hud_interface / Grenade HUD Interface
hmt / .hud_message_text / HUD Messages
hudg / .hud_globals / General HUD Settings
hud# / .hud_number / HUD Numbers Settings
item / .item / Item
itmc / .item_collection / Respawning Objects Collection
jpt! / .damage_effect / Damage Effect
lens / .lens_flare / Lens Flare
lifi / .device_light_fixture / Light Fixture
ligh / .light / Light
lsnd / .sound_looping / Looping Sound
mach / .device_machine / Machine
matg / .globals / General Game Settings
metr / .meter / Meter
mgs2 / .light_volume / Volumetric Light
mod2 / .gbxmodel / Gearbox PC Model
mode / .model / Xbox Model
mply / .multiplayer_scenario_description / Multiplayer Descriptions
ngpr / .preferences_network_game / Multiplayer Character Settings
obje / .object / Object
part / .particle / Particle
pctl / .particle_system / Particle System
phys / .physics / Object Physics
plac / .placeholder / Object Placeholder
pphy / .point_physics / Particle Point Physics
proj / .projectile / Projectile
rain / .weather_particle_system / Weather
sbsp / .scenario_structure_bsp / Scenario Environment Structure
scen / .scenery / Scenery
scex / .shader_transparent_chicago_extended / Extended Transparent Shader
schi / .shader_transparent_chicago / Transparent Shader
scnr / .scenario / Scenario Environment Configuration
senv / .shader_environment / Environment Shader
sgla / .shader_transparent_glass / Transparent Glass Shader
shdr / .shader / Generic Shader
sky / .sky / Sky
smet / .shader_transparent_meter / Transparent Meter Shader
snd! / .sound / Sound
snde / .sound_environment / Ambient Effect
soso / .shader_model / Model Shader
sotr / .shader_transparent_generic / Generic Transparent Shader
Soul / .ui_widget_collection / UI Widget Collection
spla / .shader_transparent_plasma / Transparent Plasma Shader
ssce / .sound_scenery / Sound-Emitting Scenery
str# / .string_list / String References
swat / .shader_transparent_water / Transparent Water Shader
tagc / .tag_collection / Tag Collection
trak / .camera_track / Camera Track
udlg / .dialogue / Unit Dialogue
unhi / .unit_hud_interface / Unit HUD Interface
unit / .unit / Unit
ustr / .unicode_string_list / Unicode String References
vcky / .virtual_keyboard / Virtual Keyboard
vehi / .vehicle / Vehicle
weap / .weapon / Weapon
wind / .wind / Wind
wphi / .weapon_hud_interface / Weapon HUD Interface
As I continue developing this application, I will post the most recent video preview here.
CONTACT
Simply reply to this forum post or send me a message in my Discord server: https://discord.gg/mcEzrrv
DOWNLOAD
silence version 1 for OS X 10.11+. The .zip archive password is:
Code: Select all
beta tester
COMMENTARY
Version 1 is a milestone. I intend to easily complete the rest of the tag file support, probably within this month of May.