Dated source reference. Current release status: handoff state. Full original relative paths are in the developer archive.
OpenHoops Roster Editor
The live browser Roster Studio now includes public email-code accounts, a synced workspace library, named role-based invitations and complete workspace backup/recovery. Existing share links remain compatible. Current scope and acceptance. Historical desktop instructions below do not supersede browser delivery.
The canonical interface is collaborative Roster Studio in the browser, replacing further desktop UI and macOS/Linux binary work at the user's request. Web0.3.0.dev1/source56d is live; the main homepage remains reserved.46 production account/recovery cases,40 legacy collaboration cases,16 routing/access cases and28 frontend checks pass; the exact accepted186-test Python writer remains unchanged. Earlier905-team authoring/export/reimport evidence retains its scope. Current evidence and limits distinguish supported standalone ROS authoring from full RED MC semantics and pixel/physical cross-browser certification. Historical desktop source/downloads remain preserved.
Preserved Windows editor documentation
Windows development editor and independent writer for original NBA 2K14 PC ROS files and the opt-in OpenHoops expanded representation. Current private source: 0.1.0.dev8. It uses Windows Forms and a private Python subprocess over standard input/output. It launches no HTTP service and does not attach to the game. The hosted dev7 download is unchanged.
This implements the complete named-column inventory from the supplied RED MC NBA 2K14 roster references across 39 tables, including the free-agent pool. Players expose 356 columns including the physical row ID. Field coverage is an inventory claim: unknown field meanings, every possible value's gameplay effect, and full RED MC feature parity are not certified.
Windows use
The public Windows preview includes OpenHoopsRoster.exe, bundled Python, an independent factual catalog with OpenHoops-authored help, and quickstart instructions. Extract the entire ZIP and open the EXE; no separate Python/RED MC installation is needed. The worker prefers the bundled runtime; OPENHOOPS_ROSTER_PYTHON remains an explicit override. Earlier private dev6 build41f and its reference-tree requirements are historical. Original supplied programs/help/schema files are not redistributed.
Open a .ROS, edit the working copy, then Save a copy under a new filename. Outputs use uppercase .ROS: in the tested original game, an identical lowercase-extension file was absent from the load list until renamed. The writer preserves the original file, refuses existing destinations and checks that the source has not changed externally. Use letters, digits and spaces in the output name, at most 25 characters including the extension.
Expanded files require the separately tested OpenHoops roster adapter. Opening or writing them in an unmodified game or an existing RED MC/Sigil build is not supported. The stable working game has not been upgraded automatically. See roster capacity.
Workspace and authoring tools
Common tables have Players, Teams, Jerseys, Staff and Arenas tabs, with all39 tables still available in the table selector. File, Edit, Roster and Tools menus group the full command set. The right-hand inspector explains the selected field; filters, original field groups, full-table sorting and pagination remain available.
Check roster produces a read-only health report covering verified typed references, text decoding, duplicate player identities, stored roster membership and selected finite capacities. It distinguishes errors from warnings, reports counts even when details are truncated, and makes no automatic repairs. Stock and the combined906-team specimen both pass these checks with zero findings. This is not universal game-mode validation.
Review changes compares the working copy with the immutable opened state, including extra fields. Tools → Compare roster compares with another file. Both compare physical table/row IDs; moved rows are shown as row changes and identities are not guessed. Reports show before/after values, added/deleted records and unmapped-bit changes. Double-click a finding to navigate to its current record, or export the report as JSON. Details are capped at2000 changes/1000 health findings; summary counts cover the complete scan.
Extra fields edits namespaced text, numeric, boolean or null values for the selected record or entire roster. They share undo/redo and are saved in a hash-bound .ROS.openhoops.json companion without consuming native text. Keep both files together. Explicit row moves/deletion update metadata; clones/imports start without source metadata so external identities are not duplicated. The current native hook does not consume these fields yet. See format and future-reader contract, including native-game-save and power-loss limitations.
College fields adds a guided optional vocabulary for teams/players/staff/arenas/uniforms/schools, plus Tools → Roster / season fields. Version1 defines91 typed fields with descriptions, examples, dropdowns and separate Not set/Unknown states. It covers NCAA D1/D2/D3 and NAIA identity, stable conference IDs, rankings, high school and previous-college context. Recommended/All/group views preserve hidden drafts and custom fields. Creator guide and complete field list.
Export/Import college CSV bulk-edits metadata separately from native CSV. It includes native name context and a required native roster hash, uses one undoable import transaction, and preserves custom fields. Conference declarations groups declared membership and reports consistency problems; Check roster includes those warnings. This supports90+ metadata conferences, not expanded native standings/scheduling/playoffs. Native conference research. No presentation or native metadata consumer is implemented by this editor work.
File → Export view CSV exports every matching row and the currently visible columns, including ID; it is not limited to the displayed100-row page. CLI export retains its full-table behavior.
Editing
- Select any named roster table. Use the original field groups and Show fields search to narrow hundreds of columns. Original field names, labels and descriptions remain available. Common player fields have labeled dropdowns; unknown codes remain visible and editable as raw values.
- Choose color opens an RGB picker for a selected supported color field. It changes only the 24 RGB bits and preserves any separately stored alpha byte. Hexadecimal cell editing remains available. CSV export retains numeric enum codes; import also accepts an exact supported label or the displayed code-and-label value.
- Find row searches names/IDs or accepts one field condition, such as
ID >= 8000,Pos = 1, orLast_Name contains Smith. Clicking a column heading sorts the entire matching table before pagination. - Global edit sets, adds or multiplies a field for all, filtered or selected rows. CSV import matches existing rows by
ID; export writes the table's named columns. Clipboard paste follows visible columns and refuses invalid/read-only changes. - Clone team creates separate assigned player records and four uniform records per copy. It allocates unused player ASA/ID2 values and team graphics IDs, repoints roster/lineup/appearance references, and gives alternative city names distinct values. It reuses template artwork and attributes.
- Import team copies a team from another ROS, its assigned players, all associated uniforms, and linked arena, staff, playbook, headshape, statistics and history records. It re-interns text, allocates identities and reconciles award/boost ownership. Actual/default playbooks are copied together. References to other teams/players must match uniquely by identity and names in the destination; unresolved matches stop the whole import. It does not copy external IFF artwork.
- Clone rows copies individual records. Move rows updates verified typed references and known packed statistics indices. Delete rows refuses records with incoming links until those links are reassigned. Find references lists those links, including unnamed stored pointer fields. Physical team and actual/default playbook reordering/deletion remain unavailable because they have additional native index rules; the singleton free-agent pool is also protected.
- Ctrl + double-click follows a known table reference. Undo/Redo stores up to 30 complete transactions. A failed cell, CSV, script, move or import restores the preceding working state.
- TURK scripts supports the original documented basic declarations, expressions, inclusive loops, conditionals and table assignments. It uses its own bounded parser/interpreter with no host command execution. One undo reverses the complete script.
Source-only match preparation
Current backend adds prepare-match for a new hash-bound ROS with unchanged membership, requested starting order and native assigned-minute preferences. Format/usage/evidence.116 Windows writer tests pass, including the existing101 and15 new cases; generated905-roster match startup retained requested starters/order/minutes. This helper is not in the published dev7 GUI/ZIP. Loading and Start remain manual; exact substitutions remain engine controlled.
Batch authoring
Use the same writer through python run.py:
python run.py inspect Source.ROS
python run.py export Source.ROS 3 Players.csv
python run.py import Source.ROS 3 Players.csv Edited.ROS
python run.py clone Source.ROS Expanded.ROS --template 2 --count 800
python run.py import-team Expanded.ROS Donor.ROS 2 Combined.ROS --name "Imported Team"
python run.py references Combined.ROS 3 1665
python run.py move-rows Combined.ROS 3 1665 Moved.ROS --before 0
python run.py delete-rows Combined.ROS 3 1665 Deleted.ROS
python run.py turk Source.ROS Script.turk Edited.ROS
Run builds and tests on the Dell. The desktop source compiles with the existing .NET Framework C# compiler and references System.Windows.Forms.dll, System.Drawing.dll, and System.Web.Extensions.dll. test_writer.py uses the preserved Dell stock roster and frozen capacity fixture; it is a project acceptance suite, not a dependency installer.
Limits and evidence
The writer admits the verified stock schema/size or the 16 MiB expanded backing. Arena A grows through sixteen 64K-character chunks, at most two MiB of UTF-16 text. This is finite. Tables have 16-bit row handles; automatic ASA allocation stays inside the 14-bit transaction-history range and reserves players, boosts, awards and trade history. A team stores 20 roster slots; the native free-agent pool stores 1,000 entries, and the verified boost collection stores 2,000 handles. Boost-row changes rebuild that collection; overflow is refused. Base player ratings do not consume boost slots. These limits are distinct from the old text ceiling.
Career/association/playoff containers, draft-class formats, IFF asset editing, automatic game launch, arbitrary identity reconciliation and unrestricted team/playbook row changes are outside this build. Common player enum dropdowns and RGB color editing are implemented; undocumented animation/enum associations remain raw fields. Full RED MC UI/workflow parity remains unfinished. The editor must not be described as a fully interchangeable RED MC replacement yet.
The dev6 writer passed 101 Windows acceptance tests. Final41f changes only C# header sizing and current README relative to41c; its writer/reference/test files are hash-verified against that accepted stage. The final desktop is compiled separately and rendered on Windows. Earlier dev5 field-group/dropdown/RGB acceptance remains historical evidence. The earlier dev5 Windows GUI check verified original field groups, a position dropdown edit and an RGB dialog edit with undo back to zero pending operations. The source file remained unchanged and the app closed normally. Earlier39d separately supplies GUI save/read-back evidence. The combined artifact passed native load, game save and fresh-process reload at 906 teams, 13,680 players and 3,790 uniforms, with 12,000 distinct new synthetic name pairs and743,714 text bytes across six chunks. It includes800 cloned teams plus one imported team with all11 uniforms, a player move and an unused-row deletion. The dev4 writer regeneration matches the native-saved meaningful serialized bits, including its derived boost list; dev5 adds field presentation and labeled enum input and passes the current writer suite; the CRC and unused padding/tail differ. This does not claim a separate live load of the latest AllReady filename. Earlier failures exposed logical-end rounding and unpaired playbook imports; both are corrected. See the editor verification ledger. Earlier capacity gameplay evidence remains separate from combined editor-operation acceptance.
Original RED MC references retain Vl@d Zola Jr./RED Modding Center attribution and hashes in reference provenance. Sigil-derived declarative data retains provenance, its license and third-party notices. Original encoder/serializer instructions were inspected in bounded Dell emulation; the original installer and DLL initialization were not executed. Unnamed record bits, original text and opaque file data are preserved.