Freelancer Mod Studio - 1.2
-
Official Page
Download
Source CodeFreelancer Mod Studio is a well-polished and powerful IDE for experienced as well as beginning modders. You can easily create and edit your mods by using the visual ini/bini-editor with unlimited undo/redo, powerful copy/cut/paste, multi-editing and 3D model view support. The implemented 3D system editor shows real Freelancer models and supports position/rotation/scale manipulation inside the editor. It is currently the best tool around to build the universe of your dreams.
Dedicated to the Freelancer modding community.
-
Version 0.8.3 is up now which has a bunch of cool new features which were a ***** to do.
Download: here
Changelog: hereVersion 0.8.3
- Added Copy/Cut/Paste
- Added Undo/Redo
- Added window layout saving/loading
- Fixed minor bugs in dock panel suite
- Fixed ini save bug where some line breaks were not written
-
It’s bad that nobody has replied so far.
Well done, stfx.
I for one understand and appreciate your hard work and look forward to your finished work of art.
The link above is broken at your website.
Sorry I am not qualified to help, I am a highly-capable modder but a very lowly programmer.
-
As you asked for responses here is mine:
1. I know how hard it is to keep a project going especially if you are alone, I did this with FLSES for some time. If it is too much take some weeks or days off, you don’t have to do this, but it’s very nice IF you do it! Always remember that!
2. Your Program looks great! I hope it will work as announced once it’s finished, so I may finally get to the modding site of things. Keep up the good work!
3. I’m sorry I can’t help you Programming, but even if I would know the programming language you use I don’t have time for another Project, sorry.
So I hope you’ll find someone to help you with this Project, like I did for mine, it gives you new confidence, that’s what I can tell you!
-
Cannon wrote:
Just wanted to say, I’d love to help but I’m already over committed. I have been watching the SVN repository though xD.Great work. I think this will be the best thing since sliced bread.
Hehe thats a pitty. But feel free to contact me as soon as you have time
The link above is broken at your website.
Working for me1. I know how hard it is to keep a project going especially if you are alone, I did this with FLSES for some time. If it is too much take some weeks or days off, you don’t have to do this, but it’s very nice IF you do it! Always remember that!
Yeah but I think I will loose the interest in this project if it is taking too long…
So I hope you’ll find someone to help you with this Project, like I did for mine, it gives you new confidence, that’s what I can tell you!
I really hope so too
-
I know I can’t help firsthand but I guess I can just give up the FLDev source since you’ve already either supplanted or equalled all the features I had planned or already have done. Would be useless to have two apps doing the same thing now wouldn’t it?
I haven’t been able to work on it in months anyways.
-
FLDev -
Guys, please don’t restrict any utilities to two-core cpus, FLDev takes ages to load its resources on my single-core cpu. And I’m not about to upgrade my machines just for FL utilities.
Thanks.
-
This is a great utility and hope you continue with its development. I have one suggestion for it though, i would really like the ability to add a single line to multiple entries in an ini file ie. i want to add explosion_arch = battledust to all my weapon entries without going through each entry and adding the line. Anyway, just a suggestion, good luck with this awesome project and ill be looking forward to its final release. BTW i second the keeping a single core version of the utility since loading FL-DEV really takes a long time on my system (and is very agrevating when i acidentally close it). Good Luck
Ozed.
-
FriendlyFire wrote:
I know I can’t help firsthand but I guess I can just give up the FLDev source since you’ve already either supplanted or equalled all the features I had planned or already have done. Would be useless to have two apps doing the same thing now wouldn’t it?I haven’t been able to work on it in months anyways.
That would be great. In what language did you write it? I am particularly interested in the algorithm of ressource dlls.
oZed wrote:
This is a great utility and hope you continue with its development. I have one suggestion for it though, i would really like the ability to add a single line to multiple entries in an ini file ie. i want to add explosion_arch = battledust to all my weapon entries without going through each entry and adding the line. Anyway, just a suggestion, good luck with this awesome project and ill be looking forward to its final release. BTW i second the keeping a single core version of the utility since loading FL-DEV really takes a long time on my system (and is very agrevating when i acidentally close it). Good LuckOzed.
That is already possible. All you have to do is to select many entries and change the value in the property view. The value of every selected entry will be overwritten with your new value.
-
VC++ .NET. All the interfacing (INIs, CSVs, DLLs) is in a separate .NET DLL which should be easy to use in C#.
-
Finally version 0.9.2 is online which has a 3D universe/system editor implemented.
Download: here
Changelog: hereVersion 0.9.2
- Added 3D system editor
- Added 3D universe editor including display of travel connections using jumpgate (yellow), jumphole (red), both (blue) or a combination of those (gradient color)
- Added system legend icons to table editor
- Added possibility to hide/show objects in the system editor using the table editor
- Added pyramid mesh display for ships and jump gates
- Added open system menu in universe display
- Improved table editor in general
- Fixed incorrect display of document menu if there is no open file at startup
- Fixed content and document null bug
- Fixed bug with open system editor and no open document
- Fixed minor display bugs
- Fixed silent update display bug
- Fixed undo/redo bug where block will not be shown again after redo
-
Hello stfx.
I think you have made a very good start for a very useful tool.
Here is some initial feedback if I may…
If you don’t mind to improve it dramatically, would you spend the time to:
1. highlight all the applicable properties for the selected object, or grey out the ones that are not valid for it?
2. add drop-down option lists for all valid properties for the selected object?This will make it so much faster, if we don’t have to look up the options for each property.
I know this will be a lot of work and very tedious, unless you can create a way to read all properties for each object and all options for each property from all system ini files (and factions) into a database and show those options when the properties for a particular object are clicked in the editor?
That would be absolutely fabulous.
Questions please -
1. Why are New… Mod and Open… Mod… disabled?2. Universe map - When I double-clicked on a system to select the system ini file for editing from there, FL Mod Studio crashed with message box “A critical error occurred. Do you want to post an issue report? Input string was not in the correct format.”
3. When I opened shiparch.ini, all the sections are shown in Type order, with all [CollisionGroup] sections first, then all [Ship] sections, then all [Simple] sections, so the true file sequence is lost. They should be in line order please so we can see which [CollisionGroup] and [Simple] section is with which [Ship] section?
The same for weapon_equip.ini, sections are listed by type instead of in line sequence. So same change is needed.
And other files have the same problem again.
4. When editing loadouts.ini, for SECRET loadouts (wrecks) can we ensure that those loadouts cannot contain engine, shield, power, scanner or tractor options, because that causes errors?
5. Also in loadouts.ini files, is it possible to have drop-down selection options for weapons and shields so that classes are not exceeded for the hardpoints?
Sorry for suggesting more than you had in mind! I know I am asking for a new FL Explorer with much more - but that’s what we need, and it looks like you can really do it! lol
Many thanks for your good work.
-
Thanks, ok here are your answers …
1. highlight all the applicable properties for the selected object, or grey out the ones that are not valid for it?
Oh hey I did not think of that and that would already be possible without the need to convert everything to WPF (see next answer). Can you give me some examples of applicable properties for some objects. Based on what attributes should I seperate them?
2. add drop-down option lists for all valid properties for the selected object?
That was already my plan but I intend to implement it differently than you may think. The tool will scan (one day) every file in the current mod/project. But I did not implement “mod/project management” yet. In order to do it right I would need to do it using WPF but the tool is not fully converted to WPF yet so I would have to:
1. convert the tool to WPF which would result in a better performance but is pretty time intensive
2. implement mod management
3. implement type casting so that you can only enter valid values
4. implement mod scan to get all valid valuesAs you can see I would have to rewrite and add a lot of code which may or may not happen.
1. Why are New… Mod and Open… Mod… disabled?
Because I did not implement mod management yet … see answer above
2. Universe map - When I double-clicked on a system to select the system ini file for editing from there, FL Mod Studio crashed with message box “A critical error occurred. Do you want to post an issue report? Input string was not in the correct format.”
Sorry stupid typo will be fixed in the next version
3. When I opened shiparch.ini, all the sections are shown in Type order, with all [CollisionGroup] sections first, then all [Ship] sections, then all [Simple] sections, so the true file sequence is lost. They should be in line order please so we can see which [CollisionGroup] and [Simple] section is with which [Ship] section?
Oh I did not know that and it looks like a serious problem. I will think about a way to fix it.
4. When editing loadouts.ini, for SECRET loadouts (wrecks) can we ensure that those loadouts cannot contain engine, shield, power, scanner or tractor options, because that causes errors?
Should be possible if I implement answer 1
5. Also in loadouts.ini files, is it possible to have drop-down selection options for weapons and shields so that classes are not exceeded for the hardpoints?
See answer 2
-
Thanks stfx.
I will assemble some properties for you asap, it will take time so if anyone else can help with this please do.
Here are the ones for DATA\SHIPS\shiparch.ini - note I’m not sure how to list the fuse = options for the [CollisionGroup] entries…
[Simple]
nickname = (object name)
DA_archetype = (path to damage cap .3db model)
material_library = (path to .mat file)
LODranges = (0, n/0, n, n) - Level of Detail switch distances
MinSpecLOD = (only pilot model = 2, all others not used)
mass = (integer)
hit_pts = (hit points)[CollisionGroup]
obj = (object name)
separable = (true) - omitted if false (thanks adoxa)
parent_impulse = (0/10/20/60/90/120/160/240/320/500/600/1200)
child_impulse = (1/4/7/10/20/30/50/60/100/150/200/300/400/500/600/700/800/1000/1200/1500/2000)
dmg_hp = (DpXxxx - attachment hardpoint name in ship .cmp file)
dmg_obj = (Damage cap name) - needs a [Simple] entry with same name
mass = (integer)
debris_type = (cap_ship_piece/cap_ship_piece2/debris_normal/debris_small_ship/debris_vanish)
separation_explosion = (explosion_small_ship_breakoff/omitted - mutually exclusive with fuse
type = (Fin/Middle_Wing/Port_Arm/Port_Fin/Port_Side_Panel/Port_Wing/Spoiler/Starboard_Arm/Starboard_Fin/Starboard_Side_Panel/Starboard_Wing/Tail/Top_Fin)
hit_pts = (integer)
root_health_proxy = (true/false)
fuse = (fuse, start, duration - mutually exclusive with separation_explosion - multiple, not sure how to list options
group_dmg_hp = (DpXxxx - hardpoint name)
group_dmg_obj = (Damage cap name)[Ship]
ids_name = (ship name infocard)
ids_info = (full stats infocard)
ids_info1 = (ship decription infocard)
ids_info2 = (short stats template - always 66608)
ids_info3 = (short stats infocard)
nickname = (ship nickname)
ship_class = (0/1/2/3)
LODranges = (0, n, n, n, n, n)
msg_id_prefix = (gcs_refer_shiparch_atransport/gcs_refer_shiparch_borf/gcs_refer_shiparch_borhf/gcs_refer_shiparch_ctransport/gcs_refer_shiparch_hfighter/gcs_refer_shiparch_htransport/gcs_refer_shiparch_lfighter/gcs_refer_shiparch_stransport/gcs_refer_shiparch_support)
mission_property = (can_use_berths/can_use_med_moors/can_use_large_moors)
type = (FIGHTER/FREIGHTER)
mass = (integer)
hold_size = (integer)
linear_drag = (1)
fuse = (fuse name, duration, at hit points) - multiple entries
max_bank_angle = (10/15/20/25/30/35/40/45/50/55/60)
camera_offset = (height, distance from ship centre)
camera_angular_acceleration = (0.025000/0.035000/0.050000/0.060000)
camera_horizontal_turn_angle = (17/20/23)
camera_vertical_turn_up_angle = (5/10/15)
camera_vertical_turn_down_angle = (20/25/30)
camera_turn_look_ahead_slerp_amount = (1)
nanobot_limit = (integer)
shield_battery_limit = (integer)
hit_pts = (integer)
DA_archetype = (path to ship .cmp file)
material_library = (path to ship .mat file)
material_library = (FX\envmapbasic.mat - can be omitted)
envmap_material = (envmapbasic - can be omitted)
cockpit = (path to ship cockpit ini file)
pilot_mesh = (generic_pilot - can be omitted if pilot not visible)
explosion_arch = (explosion_asteroid_miner/explosion_br_elite/explosion_br_fighter/explosion_br_freighter/explosion_cap_ship1/explosion_co_elite/explosion_co_fighter/explosion_co_freighter/explosion_cv_fighter/explosion_ge_atransport/explosion_instant/explosion_ku_elite/explosion_ku_fighter/explosion_ku_freighter/explosion_large_ship01/explosion_li_elite/explosion_li_fighter/explosion_li_freighter/explosion_no_battleship/explosion_no_elite/explosion_no_gunboat/explosion_rh_battleship/explosion_rh_elite/explosion_rh_fighter/explosion_rh_freighter/explosion_toss_debris_200/shatter_elite/shatter_utility/shatter_utility_small)
surface_hit_effects = (0, small_hull_hit_light01, small_hull_hit_light02, small_hull_hit_light03) - entry 1
surface_hit_effects = (150, small_hull_hit_medium01, small_hull_hit_medium02, small_hull_hit_medium03) - entry 2
surface_hit_effects = (300, small_hull_hit_heavy01, small_hull_hit_heavy02, small_hull_hit_heavy03) - entry 3
steering_torque = (x, y, z)
angular_drag = (x, y, z)
rotation_inertia = (x, y,z)
nudge_force = (30000 - 30000000)
strafe_force = (integer, 2 x nudge_force)
strafe_power_usage = (2 - 5000)
bay_door_anim = (Sc_open/Sc_open bay/Sc_open baydoor/Sc_open dock1/Sc_open door/Sc_pi_elite/Sc_pi_fighter/Sc_pi_vheavy_fighter/Sc_prison_liner/Sc_rh_freighter - name of animation script in ship .cmp if any)
bay_doors_open_snd = (cargo_doors_open/hanger_doors_opening)
bay_doors_close_snd = (cargo_doors_close/hanger_doors_closing)
hp_bay_surface = (HpBayDoor01)
hp_bay_external = (HpBayDoor02)
num_exhaust_nozzles = (same as number of engines in ship .cmp file)
hp_tractor_source = HpTractor_Source
shield_link = (shieldname, HpMount, HpShield01, … HpShieldnn)
hp_type = (hp_gun_special_1/2/3/4/5/6/7/8/9/10, HpWeapon01, … HpWeaponnn) - multiple
hp_type = (hp_turret_special_1/2/3/4/5/6/7/8/9/10, HpTurret01, … HpTurretnn) - multiple
hp_type = (hp_elite_shield_special_1/2/3/4/5/6/7/8/9/10, HpShield01, … HpShieldnn) - multiple
hp_type = (hp_freighter_shield_special_1/2/3/4/5/6/7/8/9/10, HpShield01, … HpShieldnn) - multiple
hp_type = (hp_fighter_shield_special_1/2/3/4/5/6/7/8/9/10, HpShield01, … HpShieldnn) - multiple
hp_type = (hp_thruster, HpThruster01, … HpThrusternn)
hp_type = (hp_mine_dropper, HpMine01, … HpMinenn)
hp_type = (hp_countermeasure_dropper, HpCM01, … HpCMnn)
hp_type = (hp_torpedo_special_2, HpTorpedo01, HpTorpedonn) - cruise disrupter mount
hp_type = (hp_torpedo_special_1, HpTorpedo01, HpTorpedonn) - torpedo mount
nomad = (true) - present for nomad ships only -
separable = (true/false)
This is incorrect. Freelancer only tests if it exists, thus separable = false is identical to separable = true. JFLP removes the value altogether, just using separable, which the Studio has a problem with (presumably sees it as blank, so doesn’t write it back). This also applies to autoselect in news.ini and autoplay in the missions.
-
Thanks for the heads-up adoxa, edited.
-
I’ve just tried the editor. First question - is the 3D editor actually functional? No idea how to move the objects around.
As for the more strategic approach. I’m not sure if many modders have a demand for visual editing of ini files. Some text editors provide collapsible ini file entries for compact view, and using ctrl-f for searching things is something we’re all accustomed to. Implementing an error checker for all ini entries, and for links between those entries… well, could be useful, but it will take a lifetime. Plus, there are pretty good error checkers available around.
Generally, if I were you, I’d concentrate primarily on the 3D system editing part.
Which leads to the next question. Right now you can open and view the system, change coordinates in “properties” and observe the result. There are several drawbacks here: first, you cannot move them in 3D mode (which was already mentioned), second, there are many excessive properties for all objects that are never used (blank) and make it harder to actually find the coordinates.
Also, I tried saving the file with the Mod Studio, and it looks like all the entries for all objects in the system are re-arranged, with changed ini properties order and changed order of objects. I mean… what for would you do that? Freelancer Explorer, with all its flaws, never messed with the code that wasn’t changed (except for adding the line breaks) and placed entries for new objects in the order used in Vanilla FL. With modders accustomed to Vanilla formatting, I don’t think it’s a good idea to change it. For example:
a base in Vanilla starts like that
[Object]
nickname = EW15_11
pos = -66148, 0, 31979
ids_info = 65713
behavior = NOTHING
pilot = pilot_solar_easy
dock_with = EW15_11_Base
base = EW15_11_Baseand base after saving the file in Studio is
[Object]
Archetype = space_police01
Base = EW15_11_Base
behavior = NOTHING
difficulty_level = 18
dock_with = EW15_11_Base
ids_info = 65713
ids_name = 505200Anyway - just like with Freelancer Explorer, each tool (especially in testing stage) needs me as a system modder to track the code changes that the tool makes - and in this case, tracking changes is hard as hell.
I believe there are a number of really strong features in this new editor - one of them is showing the direction and size of objects in the 3D view. Planet rings, for example - that’s something that can be used for system editing right now (even with the viewer). So, it’s only a suggestion, but why not start expanding in that area? First thing that comes into mind is implementing direction controls for objects like wrecks - so that you could see in 3D view which direction the wreck is exactly facing. If you could add actual models to 3D view - even better, but preformance issues will arise because of that. If it’s done, it must be optional only, with schematic view also available.
So, in my opinion, the primary things to proceed with would be:
-
Concentrate on systems only, at least for now, to do what FL Explorer can do, and do it better. FL Explorer has good “wizards” to create bases and such, so it would be good to duplicate those, but not essentially.
-
Make the editor usable for fine-tuning systems in its current stage, which means that it shouldn’t re-arrange the ini entries at all, editing only the part that must be edited. Like, if you change angle of planetary rings, only one line of the ini file is actually changed.
-
Make selection of objects in 3D view easier. Several ways to do this - make smaller objects within larger ones selectible, creating sortable lists of objects that would allow to group some, for example, to remove all zones from the view, etc.
All I can think of right now.
FLDev: not speaking for everyone, but we at Discovery use it for one specific (and very much needed) task: importing infocard sheets. And since the format that FLDev uses for it is quite convenient, it’s better to make sure that the new tool supports this import as well. But I won’t consider this a high-priority task.
-
-
On second look I tend to agree with Igiss.
If you focus on an ini editor the project will be long delayed.
And yes it is totally important to NOT change line order in most files.