Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Titanfall Online #1

Open
21 of 79 tasks
snake-biscuits opened this issue Nov 7, 2022 · 5 comments
Open
21 of 79 tasks

Titanfall Online #1

snake-biscuits opened this issue Nov 7, 2022 · 5 comments
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed Titanfall Online This issue affects Titanfall Online

Comments

@snake-biscuits
Copy link
Member

snake-biscuits commented Nov 7, 2022

Build an entity zoo with every entity and figure out what it does
Update the .ent files where nessecary
If an entity / family of entities looks like it'll be a lot of work, break it off into a child issue

  • entities.ent for entities which appear in the bsp.ENTITIES lump
    • color_correction
    • env_dropzone
    • env_soundscape_triggerable
    • env_tonemap_controller
    • env_wind
    • func_breakable
    • func_breakable_surf
    • func_brush
    • func_window_hint
    • info_intermission
    • info_lightprobe
    • info_player_start
    • info_replacement_titan_spawn
    • info_spawnpoint_flag
    • info_teleport_destination
    • keyframe_rope
    • light
    • light_environment
    • light_spot
    • move_rope
    • npc_turret_mega
    • npc_turret_mega_bb
    • phys_ragdollmagnet
    • prop_bigbrother_panel
    • prop_exfil_panel
    • prop_physics
    • script_marvin_job
    • trigger_capture_point
    • trigger_hurt
    • trigger_indoor_area
    • trigger_multiple
    • trigger_once
    • trigger_out_of_bounds
    • trigger_soundscape
    • water_lod_control
    • worldspawn
  • environment_entities.ent for entities which appear in maps/bsp_name_env.ent
    • env_fog_controller
    • sky_camera
  • effects_entities.ent for entities which appear in maps/bsp_name_fx.ent
    • beam_spotlight
    • env_sprite_clientside
    • info_particle_system
    • info_particle_system (editorclass="info_partice_system_clientside")
    • info_target (editorclass="info_target_fx")
    • info_target_clientside (editorclass="info_target_fx_clientside")
  • script_entities.ent for entities which appear in maps/bsp_name_script.ent
    • assault_assaultpoint
    • info_hardpoint
    • info_hint
    • info_node
    • info_node (editorclass=info_node_spectre)
    • info_node_cover_crouch
    • info_node_cover_left
    • info_node_cover_right
    • info_node_cover_stand
    • info_node_safe_hint
    • info_target
    • info_target_clientside
    • path_track
    • prop_control_panel
    • prop_dynamic
    • prop_refuel_pump
    • script_ref
    • traverse
  • sound_entities.ent for entities which appear in maps/bsp_name_snd.ent
    • ambient_generic
  • spawn_entities.ent for entities which appear in maps/bsp_name_spawn.ent
    • info_frontline
    • info_spawnpoint_droppod
    • info_spawnpoint_droppod_start
    • info_spawnpoint_dropship
    • info_spawnpoint_dropship_start
    • info_spawnpoint_human
    • info_spawnpoint_human_start (see Titanfall2/entities.ent)
    • info_spawnpoint_marvin
    • info_spawnpoint_titan
    • info_spawnpoint_titan_start
@snake-biscuits snake-biscuits self-assigned this Nov 7, 2022
@snake-biscuits snake-biscuits added the enhancement New feature or request label Nov 7, 2022
@snake-biscuits
Copy link
Member Author

snake-biscuits commented Nov 7, 2022

Generated list of classnames with bsp_tool:

>>> import fnmatch
>>> import functools
>>> import os
>>> 
>>> import bsp_tool
>>> 
>>> r1md = "E:/Mod/Titanfall/maps"
>>> r1omd = "E:/Mod/TitanfallOnline/maps"
>>> r1m = {m[:-4]: bsp_tool.load_bsp(os.path.join(r1md, m)) for m in fnmatch.filter(os.listdir(r1md), "*.bsp")}
>>> r1om = {m[:-4]: bsp_tool.load_bsp(os.path.join(r1omd, m)) for m in fnmatch.filter(os.listdir(r1omd), "*.bsp")}
>>> # for each entity lump:
>>> r1_script= functools.reduce(lambda a, b: a.union(b), [{(e["classname"], e.get("editorclass", "")) for e in bsp.ENTITIES_script} for bsp in r1m.values()])
>>> r1o_script= functools.reduce(lambda a, b: a.union(b), [{(e["classname"], e.get("editorclass", "")) for e in bsp.ENTITIES_script} for bsp in r1om.values()])
>>> {print(f"   - [ ] {cn}", f"(editorclass={ec})" if ec != "" else "") for cn, ec in sorted(r1_script.union(r1o_script))}
>>> # copy & paste results into github issue

This was referenced Nov 11, 2022
@snake-biscuits
Copy link
Member Author

We should also add entities which get compiled into the map as special lumps (e.g. cubemaps & static props)
VDC: List of Hammer-only entitities
Quake3's misc_model is another useful one, used to compile model geometry into triangles embedded in the bsp

Respawn apparently managed to do visibility calculations for static prop occlusion, just look at Apex maps w/o props

NOTE: if you count static props, Titanfall maps can have thousands of entities
-- need to do some model lod switching, fade distance emulation or fade to model bounding boxes like Hammer

@snake-biscuits
Copy link
Member Author

Helper code for keyvalues:

>>> e_k = functools.reduce(lambda a, b: a.union(b), [set(e.keys()) for bsp in r1m.entities for e in bsp.ENTITIES.search(classname="entity")])
>>> {print(x) for x in sorted(e_k)}
# list of entity keys
# compare base.fgd
# compare VDC
# compare Quake3 .ent
>>> e_k_vs = {e.get("key", "") for bsp in r1m.entities for e in bsp.ENTITIES.search(classname="entity")}
>>> print(sorted(e_k_vs)[-1])  # see what values look like to guess / confirm type

@snake-biscuits
Copy link
Member Author

snake-biscuits commented Nov 10, 2022

Generated a huge batch of .ent files over at snake-biscuits/bsp_tool_examples

Installation:

  • Download .xml entity definitions:
  • Change .xml extension to .ent
  • Copy files to MRVN-radiant/gamepacks/TitanfallOnline.game/TitanfallOnline/

WARNING! Experimental! will replace default entities.ent! (make a backup just in case)

Feel free to try new entities & keys out
Please record what happens if you do (record as in take notes, doesn't have to be video)
I'll be mixing in the ents by @catornot & some of my manual additions at a later date
plus updating the generator (forcing inheritance, more interactive & analysis tools etc.)
but rn i gotta sleep

@snake-biscuits
Copy link
Member Author

snake-biscuits commented Nov 10, 2022

Generated a huge batch of .ent files over at snake-biscuits/bsp_tool_examples

This includes .ent for #2 & #3

@snake-biscuits snake-biscuits transferred this issue from MRVN-Radiant/MRVN-Radiant Nov 11, 2022
@snake-biscuits snake-biscuits changed the title Create entity definitions w/ useful docs & notes for each entity used in TitanfallOnline Titanfall Online Quality Assurance Nov 11, 2022
@snake-biscuits snake-biscuits added help wanted Extra attention is needed good first issue Good for newcomers Titanfall Online This issue affects Titanfall Online labels Nov 11, 2022
@snake-biscuits snake-biscuits changed the title Titanfall Online Quality Assurance Titanfall Online Nov 11, 2022
@snake-biscuits snake-biscuits pinned this issue Nov 11, 2022
@snake-biscuits snake-biscuits added this to the Titanfall Online Zoo milestone Nov 11, 2022
@snake-biscuits snake-biscuits added the documentation Improvements or additions to documentation label Mar 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed Titanfall Online This issue affects Titanfall Online
Projects
Status: Todo: Research
Development

No branches or pull requests

1 participant