I have a set of eclipse and ant based tools for modding with Sins that others may find useful when validating or building their projects.
Current Downloads (older downloads: Downloads)
FAQ
System Requirements
Syntax Wiki - A syntaxual representation of almost all of the Sins editable files.
How To's:How To Install EclipseHow To Setup Entity Validation Eclipse Plugin (Updated for new preference with v0.6)
Video: How to setup and configure the Soase Eclipse Plugin
References:
Mod Development with Eclipse (Forum link providing a general overview of Eclipse)
Eclipse download site (http://eclipse.org/downloads)
Tools Supported:
Entity Editor (Click me for cool stuff about visual Entity Validations)
Eclipse Editor builder/nature extension that provides visual feedback to the following validations.
Entity Definition View - Displays the syntax rules for the currently opened entity file.
Summary of validations currently supported: Boolean: Validates boolean entries contain TRUE or FALSE onlyBrush: Validates a referenced brush entry exists for the value enteredConditional Validation: Allows conditional structures to follow based on a field valueKey word: Validates all entity file key words are spelled correctlyQuotes: Validates any values requiring qoutes have beginning and ending quotation marksInteger: Validates integer entries contain digitsDecimal: Validates decimal entries contain ####.#####Entity References: Validates a referenced entity file exists for the value enteredString Reference: Validates a referenced String entry exists for the value enteredSound Reference: Validates a referenced Sound entry exists for the value enteredEnumeration Validation: Validates an entry confirms to an allowed set of values (i.e. buffInstantActionType)Iteration Validation: Validates repeating elements are correctStructure Validation: Validates entries appear in the correct order in the entity file (configurable to allow unordered structures)Explosion Validation: Validates a referenced explosion entry exists for the value enteredTexture Validation: Validates a referenced texture exists for the value enteredParticle Validation: Validates a referenced effect exists for the value enteredSounddata Validation: Validates sounddata files for correctness including referenced sound filesGalaxyScenarioDef Validation: Validates galaxyScenarioDef files for correctness with 2 pass validationsStringInfo Validation: Validates English.str for correctnessBrushes Validation: Validates brushes files for correctnessGameplay.constants: Validates the Gameplay.constant file for correctnessExplosiondata Validation: Validates sounddata files for correctness including referenced sound filesGalaxy Validation: Validates galaxy files for correctness and performs additional validations on referenced templates and design names.
Content Assistance: [ctrl]+[space bar] on keywords or constants and get suggested completionsSyntax Coloring: change syntax coloring of entity files to suit your preferences (defaults to all black currently)Hover Help: hover over a keyword and get additional details about the value or structureQuick link to wiki syntax
Hi all,
So I consider this a fairly significant release for the Eclipse plugin tool. For starters I think it marks the last major release until Rebellion comes out.
However the real reason I feel this way is I've finally shored up some of the remaining validation rules and finally implemented required keywords. This will make validation so much better and I'm really looking forward to the improvement. For example enter "Intrinsic" as a levelSourceType without the minExperienceLevelRequired will display a warning now. This level of validation coupled with the hover help, content assistance and the Entity Definition View (and Wiki) make this a really great tool for modding Sins.
Enjoy or don't, it's up to you!
Eclipse Plugin:
10/6/2011 v1.0 (Link to download section)
Wow! Congrats and thanks a lot
How do I ope Eclipse? I keep getting the error that says it:
failed to load the Main Class attribute from...
More information please. What version of Eclipse? Do you have Java installed? What version of Java?
Of Eclipse, I have the latest version.
Of java, i have it installed, and I have version 2.0.51
lol, well there are too many different versions of Eclipse to even know what this means.
I have no idea what this Java version even is...
Here's my suggestion: Download from these two sites. You'll want the Java 6 SDK from oracle. The eclipse is a classic version I use so I know it works.
I think it is time to reinstall all this myself.
I guess the Java SE 7 - JDK is OK? http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html
The instructions state "Start eclipse by executing eclipse.exe. If it doesn't start make sure you have Java 1.6 installed."
It's like going to Starbuks. I just want a regular damn coffee and not have to pick from a mile long menu.
Wonderin' if I should make a set of reference files specifically for your tool that fixes all the errors and includes a change log?
Is it possible to bundle eclipse with the reference files? Maybe some of the setup already done and a new user just has to check for your plugin version update?
To get rid of most of the pirate sound errors I used replace with to change "UI_TECH_ with "EVENTTECH_ and that got rid of around 50 errors there.
I have not even played to much to see the string errors.Would it be better to remove the string link or add a string to the string file?
Same with missing brushes? I can always make a new brush.
No clue about the buff errors
invalid value! expected: [Invalid, PrioritizeNewBuffs, PrioritizeOldBuffs]: onReapplyDuplicateType "ReplaceWithNewBuff" BuffEvasiveManeuvers.entity /Diplomacy Reference Files/GameInfo line 3 Entity Problem
Expected keyword missing: buffStackingLimitType. Found:
buffExclusivityForAIType "ExclusiveForAllPlayers" BuffEvasiveManeuvers.entity /Diplomacy Reference Files/GameInfo line 4 Entity Problem
and the lines from BuffEvasiveManuvers
onReapplyDuplicateType "ReplaceWithNewBuff"buffExclusivityForAIType "ExclusiveForAllPlayers"
any help with those?
EDIT: Ya I am a bit of a dumbass when it comes to these development tools, thank god you made that video.
I... wish this existed two years ago.
Haha, no kidding. It still bugs me with all the coffee references. I switched from C++ to Java because of the opportunities it presented, even though I missed C++ development.
I don't see any reason why this wouldn't be possible. It would be similar to how projects are shared over a repository.
A bundle could be made that's all inclusive java+eclipse+plugin+reference files. The workspace and projects for the reference files should be able to be pre-built and ready for startup.
I tend to leave them as warnings so I know what I need to fill in later. I then have a template for strings I personally use that makes string editing simpler. It's really just up to you and what you want.
These are dead files included in the original game but not used anywhere. They have to exist or checksum won't match.
Thanks, I started the tool last April. It originally started as a command line validator that I slowly refactored into an Eclipse plugin.
Found a couple of "things" that weren't generating in the wiki the way I wanted with the latest changes. Also prompted me to cleanup a couple other items I've been meaning to do. As such, I tweaked my Wiki Syntax Generator and cut a new version of the wiki. It should now allow you to properly navigate from fields with similar names such as modifierType to the proper backend definitions.
Basically so you can get from here
http://code.google.com/p/soaseplugin/wiki/ResearchSubject
to here correctly...
http://code.google.com/p/soaseplugin/wiki/modifierTypeBool
http://code.google.com/p/soaseplugin/wiki/modifierTypeFloat
I don't get why the checksum would have to match? As soon as I start to m0d the checksum will not match.
If the files are not used by the game and produce errors in the validation, why not just not include them in the reference files?
I am down to a few errors left on my new reference files. Bundling a new SoaSE Eclipse with the reference files in the workspace. Fixed a few not used abilities to at least pass the validation and gave the pirate Siege and Flak descriptions the same that TEC use so I didn't have to add strings. Need a counter description for Pirate Medium
missing reference [English.str]: counterDescriptionStringID "IDS_FRIGATE_PIRATEMEDIUM_COUNTERDESC"
ID "IDS_COUNTERDESC_FRIGATE_LONGRANGE" Value "Strong vs. light frigates."
ID "IDS_COUNTERDESC_FRIGATE_HEAVY" Value "Strong vs. antifighter frigates, long range frigates, siege frigates, carrier cruisers and utility cruisers, and capital ships."
ID "IDS_COUNTERDESC_FIGHTER_BOMBER" Value "Strong vs. heavy cruisers, structures, and capital ships."
All sound references fixed for all versions. Particles fixed for all versions. Meshes fixed for all versions.
The devs fixed the errors TSOP found for Diplomacy only so since I found most of them,I am back porting the fixes to Ent and Org
You misunderstood me. I meant They're only included because they are in the core game's GameInfo directory to satisfy the checksum for online/lan play. I have my own custom reference set that removes or fixes several issues I don't like to see as well.
Ahhh, gotcha .
Finish getting the errors to 0 tonight and if I put all 3 reference file sets in 1 7z file it is very small as 7z is smart enough to know that if the same file is in the archive 3x then compress only 1 version but extract 3. The 3 sets are 719mb but compressed in 7z it is 19.9 mb
Get the new Reference files for all 3 sets with 0 errors when validating and optimizations.
SoaSE Skydrive Public Folder
Note Anyone can use this link to view the item without signing in to Windows Live.
Doing some testing with the new files and I have a validation problem with AbilityNanoHullRepair.entity for Org Sins
If I rework the file to pass validation I get a DEV error
I am fixing the planet bonuses for all 3 versions then adding in the optimized meshes for fighters, mines and planets.
Might be something bonky with Vanilla sins support on my tool. I tend to focus on Entrenchment/Diplomacy and don't know if anyone's actually used it for Vanilla.
Whats the validation error?
How is your environment setup? Do you have all three projects in one eclipse instance? Are you setting the project specific properties (Hell, I don't know if I ever documented this!).
All fixed.
Zombies updated the plugin
So... Not really a tool update, but I did finally generate wiki's for all three versions of the game.
Wiki Syntax
Vanilla
Entrenchment
Diplomacy
Ya know Zombie, when you make this an executable that will install and set itself up...Yay.
Hmm... don't think so. The install process for my tool only requires a jar file to be copied into the dropins director for Eclipse.
I look at it this way... If it's too complicated to download and install a Java SDK, download and extract Eclipse, download and copy the plugin jar into the Eclipse dropins directory... then... This tool is infinitely more complex than what that user should be using and should probably stick with Notepad++.
I wrote this tool first and foremost for my own modding which it works exceptionally well for. I released it for others to use because it's useful. It's been improved and enhanced multiple times in some cases based on input/feedback from others who are using the tool. Except for a few minor tweaks I haven't released yet the plugin is basically complete until Rebellion releases.
I'm hoping to add some new perspectives next year, but will need to play around with whats possible.
Maybe a Sins Browser that can filter files better.
Maybe a Browser tree that allows easy navigation of entity files starting with the Player as the root.
Maybe figuring out how to get the outline to work with entity files.
Just depends on how much free time presents itself.
*bump*
And just to be official in what we talked about on TeamSpeak, an ability, when using a buff that targets more then one unit, or target's one self, the needsToFaceTarget line must be set to false to be error free. It doesn't crash anything if it's set to true, but sloppy coding is still sloppy coding.
Well I know finally have this up and running and found the right thread... just thought you'd like to know I won't be using notepad anymore...
Also a trivial error to report, should you care to correct it.
You're missing some possible values (and thus giving me some false errors) for "LinkedPlanetUpgradeType". While the vanilla files only use "CivilianModules", "Infrastructure", "ArtifactLevel", and "Invalid", you can actually use any of the PlanetUpgradeTypes from the planet entity files, such as Population, Home etc.
So... got my rebellion convert data and started my xml modifications.
aiUseTime:
<value version="Rebellion">OnlyIfOwnTitan</value> <value version="Rebellion">NoEnemyShipsInGravityWell</value> <value version="Rebellion">OnlyWhenDisabled</value>
<condition> <value version="Rebellion">OnlyWhenManyTargetsInRangeOfBank</value> <structure_reference required="true" name="onlyAutoCastWhenTargetCountExceedsAmount" type="GenericLevel"/> <field name="onlyAutoCastWhenTargetsInBank" validation="Simple" values="FRONT,BACK,LEFT,RIGHT"/> </condition>
entityBoolModifier:
<value version="Rebellion">IsInvisible</value> <value version="Rebellion">NextAbilityAmplified</value> <value version="Rebellion">IsInNonFriendlyGravityWell</value> <value version="Rebellion">IsFlagship</value> <value version="Rebellion">Boarded</value>
buffInstantActionTypes:
<condition> <value version="Rebellion">GainHullEqualToTarget</value> <value version="Rebellion">GainShieldEqualToTarget</value> <value version="Rebellion">GainAntimatterEqualToTarget</value> <field required="true" name="instantActionTriggerType"/> </condition> <condition><value version="Rebellion">ApplyBuffToTargetsAtAdjacentOrbitBodies</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="buffType" validation="Entity" /> <structure_reference required="true" name="targetFilter"/> <structure_reference required="true" name="maxTargetCount" type="GenericLevel"/> <structure_reference required="true" name="effectInfo"/> </condition> <condition><value version="Rebellion">DoDamagePerLastSpawnerPopulation</value> <field required="true" name="instantActionTriggerType"/> <structure_reference required="true" name="damagePerPopulationPoint" type="GenericLevel"/> <field required="true" name="damageAffectType"/> <field required="true" name="damageType"/> <field required="true" name="isDamageShared"/> </condition> <condition><value version="Rebellion">DoDamagePerEntityInRadius</value> <field required="true" name="instantActionTriggerType"/> <structure_reference required="true" name="damagePerEntity" type="GenericLevel"/> <field required="true" name="damageAffectType"/> <field required="true" name="damageType"/> <field required="true" name="isDamageShared"/> <structure_reference required="true" name="targetFilter"/> <structure_reference required="true" name="range" type="GenericLevel"/> <structure_reference required="true" name="maxTargetCount" type="GenericLevel"/> </condition> <condition><value version="Rebellion">ConvertFrigateToResources</value> <field required="true" name="instantActionTriggerType"/> <structure_reference required="true" name="percentageOfCost" type="GenericLevel" /> </condition> <condition><value version="Rebellion">ApplyImpulseInSpawnerDirection</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="impulse" validation="Decimal" /> </condition> <condition><value version="Rebellion">ApplyBuffToLastSpawnerNoFilterNoRange</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="buffType" validation="Entity" /> </condition> <condition><value version="Rebellion">TeleportTowardsArbitraryTarget</value> <field required="true" name="instantActionTriggerType"/> </condition> <condition version="Rebellion"><value>CreateFrigateAtArbitraryTarget</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="frigateType" validation="Entity" /> <structure_reference required="true" name="numFrigates" type="GenericLevel"/> <structure_reference required="true" name="expiryTime" type="GenericLevel"/> <field required="true" name="spawnFrigateSoundID" validation="Sound"/> <structure_reference required="true" name="range" type="GenericLevel"/> </condition> <condition version="Rebellion"><value>RestoreShieldPointsPerc</value> <field required="true" name="instantActionTriggerType"/> <structure_reference required="true" name="shieldPerc" type="GenericLevel"/> </condition> <condition version="Rebellion"><value>RestoreHullPointsPerc</value> <field required="true" name="instantActionTriggerType"/> <structure_reference required="true" name="hullPerc" type="GenericLevel"/> </condition> <condition version="Rebellion"><value>IncreaseOwnerAbilityLevel</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="abilityIndex" validation="Decimal" /> <structure_reference required="true" name="abilityLevel" type="GenericLevel"/> </condition> <condition version="Rebellion"><value>AddPopulationToPlanet</value> <field required="true" name="instantActionTriggerType"/> <structure_reference required="true" name="populationAdded" type="GenericLevel"/> </condition> <condition version="Rebellion"><value>ApplyArbitraryTargettedBuffToSelf</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="buffType" validation="Entity" /> <structure_reference required="true" name="range" type="GenericLevel"/> <structure_reference required="true" name="effectInfo"/> </condition> <condition version="Rebellion"><value>ApplyBuffToTargetsInDirectionalCone</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="buffType" validation="Entity" /> <structure_reference required="true" name="targetFilter"/> <field required="true" name="weaponBank" validation="Simple" values="FRONT,BACK,LEFT,RIGHT"/> <structure_reference required="true" name="range" type="GenericLevel"/> <structure_reference required="true" name="coneAngle" type="GenericLevel"/> <structure_reference required="true" name="maxTargetCount" type="GenericLevel"/> <structure_reference required="true" name="effectInfo"/> </condition>
<condition><value>ChangePlayerIndexToFirstSpawner</value> <field required="true" name="instantActionTriggerType"/> <field required="true" name="isPermanent" validation="Boolean" version="Rebellion"/> <field required="true" name="failIfNotEnoughShipSlots" validation="Boolean" version="Rebellion"/> <field required="true" name="experiencePercentageToAward" validation="Decimal" version="Rebellion"/> </condition>
weaponEffectsDef:
<field name="burstDelay" validation="Decimal"/> <field name="fireDelay" validation="Decimal" version="Rebellion"/> <field name="muzzleEffectName" validation="Particle"/>
researchPrerequisites:
<structure name="researchPrerequisites"> <iterative_field name="NumResearchPrerequisites"> <structure required="false" name="ResearchPrerequisite"> <field name="Subject" validation="Entity"/> <field name="Level" validation="Integer"/> </structure> </iterative_field> <field name="RequiredFactionNameID" validation="Any" version="Rebellion"/> <field name="RequiredCompletedResearchSubjects" validation="Integer" version="Rebellion"/> </structure>
GenericLevel:
<structure name="GenericLevel"> <field name="Level:0" validation="Decimal"/> <field name="Level:1" validation="Decimal"/> <field name="Level:2" validation="Decimal"/> <field name="Level:3" validation="Decimal" version="Rebellion"/> </structure>
effectInfo:
<structure name="effectInfo"> <structure_reference name="effectAttachInfo" type="AttachInfo"/> <field name="smallEffectName" validation="Particle"/> <field name="mediumEffectName" validation="Particle" version="Rebellion"/> <field name="largeEffectName" validation="Particle"/> <field name="soundID" validation="Sound"/> </structure>
frigateRoleType:
<value version="Rebellion">AbilityCreated</value> <value version="Rebellion">Corvette</value>
statCountType:
<value version="Rebellion">FrigateCorvette</value>
armorType:
<value version="Rebellion">Titan</value>
AttackType:
<value version="Rebellion">TITAN</value>
buffEntityModifierType:
<value version="Rebellion">ShieldPointRestoration</value> <value version="Rebellion">PhysicalDamageAsDamageTarget</value> <value version="Rebellion">HullPointRestoration</value> <value version="Rebellion">AntimatterRestoration</value> <value version="Rebellion">PlanetTaxRate</value>
planetModuleRoleType:
<value version="Rebellion">TITANFACTORY</value>
WeaponClassType, weaponClassForWeaponPassive:
<value version="Rebellion">POINTDEFENSELASER</value> <value version="Rebellion">FLAK</value> <value version="Rebellion">RAILGUN</value> <value version="Rebellion">PULSEWAVE</value> <value version="Rebellion">PHASECANNON</value>
spawnShipsHyperspaceSpawnType:
<value version="Rebellion">PirateRaid</value>
more following...
There are many great features available to you once you register, including:
Sign in or Create Account