http://robotality.com/wiki/index.php?title=Special:NewPages&feed=atom&hideredirs=1&limit=250&offset=&namespace=0&username=&tagfilter=Halfway - New pages [en]2024-03-28T15:34:23ZFrom HalfwayMediaWiki 1.23.3http://robotality.com/wiki/index.php?title=CharacterPortraitsCharacterPortraits2015-02-03T13:18:02Z<p>Seminus: Created page with "==Overview== To change the character portraits extract the basicMod.zip file that is provided with the game and you can find in the ./mods folder. Extract the basicMod.zip int..."</p>
<hr />
<div>==Overview==<br />
To change the character portraits extract the basicMod.zip file that is provided with the game and you can find in the ./mods folder. Extract the basicMod.zip into the mods folder. Then open it and navigate to the ./mods/basicMod/gfx/ui/portraits. There you can find all the portraits that are used ingame.<br />
<br />
If you want to change one just overwrite an existing one and the game then integrates your new one into the atlas.</div>Seminushttp://robotality.com/wiki/index.php?title=Character_Pickup_TutorialCharacter Pickup Tutorial2014-11-05T09:22:35Z<p>Seminus: Created page with "==Overview== Characters can be placed in the level and be picked up by the player when finding them. So here is a short tutorial on how to setup an proper character pickup...."</p>
<hr />
<div>==Overview==<br />
<br />
Characters can be placed in the level and be picked up by the player when finding them. So here is a short tutorial on how to setup an proper character pickup.<br />
<br />
'''Important:''' <br />
*The pickup attribute needs an dialog or else the game will crash!<br />
*The Characters need to be placed on the Action Layer or else the Character pickup wont work.<br />
<br />
<br />
===Steps===<br />
<br />
[[File:CharacterPickup.png]]<br />
<br />
#Select the action layer.<br />
#Go into object mode and open the object tab.<br />
#Scroll down to the bottom of the list and select one of the 8 characters there (or one you made by yourself)<br />
#Place the character on the action layer. <br />
#Now double click the character to open the attribute menu and select '''Character Pickup'''<br />
#Now Select the dialog you want to be triggerd if you pick up the character and select which .unit file to use.<br />
#Now set the stance and the direction you want the character to look when you find him/her.<br />
<br />
That's it. Now run the game and talk to the character. After the dialog he/her should join your cause.<br />
<br />
'''Tip:''' In the main game we wanted to make sure that you can not miss an character pickup as it would have broken the story. So we recommend to make it an event with triggers. For example like in the first level of halfway when you find Carter. The whole pickup sequence is trigger when you open the door. For more information about trigger, watch the tutorial movie for some basics: ([[Video Tutorials]]) and read everything about Trigger here: ([[Trigger Edit Mode]])</div>Seminushttp://robotality.com/wiki/index.php?title=Developer_CodesDeveloper Codes2014-10-20T09:07:54Z<p>Seminus: /* The Codes */</p>
<hr />
<div>== Overview==<br />
With this codes you can cheat in the game. This can help you massively testing your mod before release.<br />
<br />
'''Please Note: Using this codes while playing the main campaign can corrupt your save games if you do not know what you are doing. We can not help you if you break your save. So be careful and only use them with saves you do not care about.'''<br />
<br />
<br />
===The Codes===<br />
<br />
To activate the console ingame press the '''"tab"''' key on your keyboard.<br />
<br />
*outputFPS true <br />
**activate the fps counter in the console<br />
*outputFPS false <br />
**deactivate the fps counter in the console<br />
*killAllVisible <br />
**Kills all enemies you currently have in the sector.<br />
*goToLevel <br />
**Opens a list of all current levels in your mod and you can directly jump to them (uses the default squad as team when entering so be sure to have one)<br />
*finishLevel <br />
**Finishs the current mission as if you would have won it.<br />
*failMission <br />
**The current mission fails.<br />
*save squad yourFileName.json <br />
**Saves you current squad to a json file of your naming. This is a great way to play and save real squads on the go for the default squad trigger.</div>Seminushttp://robotality.com/wiki/index.php?title=Steam_Workshop_-_publishing_your_modSteam Workshop - publishing your mod2014-10-15T13:05:28Z<p>Seminus: </p>
<hr />
<div><br />
== Steam Workshop ==<br />
<br />
Publishing your mod to the Steam Workshop is done via the level editor.<br />
<br />
=== Requirements ===<br />
<br />
# Steam must be active before starting the level editor.<br />
# The mod must be prepared as ZIP archive inside the mods/ folder. You should verify that this is done properly, e.g. by testing that the mod works in the game after zipping.<br />
# A "preview image" in PNG format is required next to, and with the same file name as the archive. For example, if your mod is prepared as "myMod.zip", you'll need an image "myMod.png" right next to it.<br />
<br />
<br />
<span style="color:#C00000">'''Important: The current version of Halfway has a problem uploading zip files that are made with WinRar. Please use the standard zip creator the OS provides.'''</span><br />
<br />
=== What's published ===<br />
<br />
# The ZIP archive as the actual user generated content which other players can subscribe to.<br />
# The PNG for display of your mod in the Steam Workshop.<br />
# The "steam-workshop-title" and "steam-workshop-description" properties inside mod-info.json are used to set title and description texts.<br />
<br />
=== First upload ===<br />
<br />
The upload is started by selecting the cloud icon in the editor toolbar. Just select the ZIP archive you want to upload. Some basic checks are performed by the editor before uploading.<br />
<br />
If you didn't yet agree to the "Steam Workshop License Agreement" (WLA), the upload won't be completed successfully, but a browser window or Steam overlay window will open, directing you to the WLA to sign. This needs to be done only once.<br />
<br />
If everything goes well, a browser window or the Steam overlay will open with the workshop item you've just uploaded. As a first step, you should "subscribe" to your own mod. As a second step, you should restart the level editor to have the modding system properly register the new subscription.<br />
<br />
=== Updates ===<br />
<br />
If you've subscribed to your mod (and restarted the editor at least once), every successive upload will update the existing mod. If you didn't subscribe, successive uploads will publish copies of the same mod, which shouldn't be your intention in most cases.<br />
<br />
=== Administration ===<br />
<br />
Mods are initially published as "private". You have to use the Steam Workshop page to make it available to any other users. From there you also can make other adjustments, or even delete the mod altogether.</div>CoDihttp://robotality.com/wiki/index.php?title=How_the_modding_system_works_(some_technical_details)How the modding system works (some technical details)2014-10-14T09:45:51Z<p>CoDi: </p>
<hr />
<div>==How the modding system works (some technical details)==<br />
<br />
===Discovery===<br />
<br />
The mod system is able to load mods from multiple locations:<br />
<br />
# As a directory structure in the mods/ folder. The system searches for mods/<folder>/mod-info.json files. The name of <folder> is then used as the (internal) name of the mod.<br />
# From ZIP archives in the mods/ folder. The content of each archive found is searched for a <folder>/mod-info.json entry, where <folder> equals the name of the archive. As an example, an archive named myMod.zip is searched for a file myMod/mod-info.json inside.<br />
# Steam Workshop files the user subscribed to are downloaded as ZIP archives. They are processed the same way as local archives, just stored at a different location (in the operating system's temp directories).<br />
<br />
In summary, it should be easy for mod creators to "transform" a mod from a raw directory structure into an archive mod by simply ZIP'ing the mods/<folder> directory.<br />
<br />
===Mod names===<br />
<br />
Mods do have an internal name, and a display name. The name used for display is set by the "display-name" property in mod-info.json. The internal name equals the folder name of the mod, or the file name of the ZIP archive.<br />
<br />
Internal names are case insensitive, which means "myMod" and "MYmoD" are equal from the mod system's point of view.<br />
<br />
Please don't use spaces and special characters in folder/archive names. The letters A-Z, a-z, 0-9, '_' and '-' are fine.<br />
<br />
===Versioning===<br />
<br />
The mod-info.json contains two different version flags. The "display-version" property is just used for display in the game's options menu. The "version" property is used internally as a "revision" number to decide if a version is "more recent".<br />
<br />
If the mod system discovers two or more mods of the same (internal) name, the version is used to decide which mod to use. If the versions are equal, the local (raw directory structure) version is preferred. This means that a content creator with his local version, a zipped version, and the version subscribed to on Steam Workshop all at the same version/revision will have his local version - the one he's most likely want to work/test with - supersede all other versions.<br />
<br />
===Directory structure===<br />
<br />
Besides the properties in mod-info.json, the mod system just uses the folder structure of a mod to decide which content to add to or replace from the main game. This means that the folder structure must follow the main game's structure in order to have mods work properly.<br />
<br />
===mod-info.json===<br />
<br />
<blockquote>{<br />
"display-name" : "That's the name shown in the main and options menus.",<br />
<br />
"display-version" : "The version string displayed in the options menu.",<br />
<br />
<br />
"version" : <the revision number used internally to for versioning>,<br />
<br />
<br />
"description" : [<br />
<br />
"The text shown in the options menu.",<br />
<br />
"Only the first two lines will be displayed."<br />
<br />
],<br />
<br />
<br />
"steam-workshop-title" : "The title to be shown in the Steam Workshop.",<br />
<br />
"steam-workshop-description" : "The description text to be shown in the Steam Workshop.",<br />
<br />
<br />
"parent" : null,<br />
<br />
"extends-parent" : false,<br />
<br />
<br />
"dependencies" : [<br />
<br />
],<br />
<br />
<br />
"flags" : [<br />
<br />
"skip-intro"<br />
<br />
]<br />
}</blockquote><br />
<br />
===Parents and dependencies===<br />
<br />
It is possible to "chain" mods by setting the "parent" property in mod-info.json. The parent's content is then superseeded by this mod. This can be useful in some cases, e.g. to have one mod offer localisation to another mod. Note: this feature wasn't tested extensively yet, so you might run into technical issues.<br />
<br />
The dependencies property hasn't been tested so far and should not be used for now. It was introduced to allow mods to customize the order in which they are processed.<br />
<br />
===Flags===<br />
<br />
The "flags" property is a list of strings. Right now only "skip-intro" is supported. If this flag is given in any mod currently active, the intro animation is skipped when starting a new game.</div>CoDihttp://robotality.com/wiki/index.php?title=Modding_AgreementModding Agreement2014-10-08T13:33:00Z<p>CoDi: /* Eula and Rules for Halfway Modding V1.0 */</p>
<hr />
<div>==Eula and Rules for Halfway Modding V1.0==<br />
We want to keep this as simple as possible. So here are the rules:<br />
<br />
<br />
===What you can do:===<br />
* You may distribute your mod (the ZIP archive) any way you want.<br />
* You may copy and modify the assets provided by the game Halfway for use in your mod.<br />
* Please ensure that you own the rights to everything you add to your mod. You are responsible for that.<br />
* You may use the Steam Workshop to publish your work, or any other platform you prefer.<br />
<br />
<br />
===What you are not allowed to do:===<br />
* You are not allowed to distribute the executables of the game (Halfway) itself. <br />
* You must not use original game assets for anything else but a Halfway mod. (Read: you are not allowed to take our assets and use them for a different project.)<br />
<br />
<br />
===Important:===<br />
* The tools are provided as they are. Use them on your own risk. We can not be taken responsible for any damage they may cause to your computer system or your data.<br />
* All the original Halfway content is (c) by Robotality UG (haftungsbeschränkt).<br />
* You warrant to Robotality that your mod does not contain any material which is obscene, offensive, racist, sexist or that may otherwise create any liability for Robotality nor any virus, trojan horses or any other malicious software.<br />
<br />
<br />
'''Have a good time modding Halfway'''<br />
<br />
The Robotality Crew<br />
<br />
Hamelin, Germany, 2014</div>Seminushttp://robotality.com/wiki/index.php?title=Eula_for_making_a_Halfway_ModEula for making a Halfway Mod2014-10-08T12:31:49Z<p>Seminus: Replaced content with " Hamelin, Germany. 2014"</p>
<hr />
<div><br />
<br />
Hamelin, Germany. 2014</div>Seminushttp://robotality.com/wiki/index.php?title=Setting_up_a_new_modSetting up a new mod2014-10-06T12:52:34Z<p>Seminus: </p>
<hr />
<div>==Important Note==<br />
'''Please Note: If you plan to make a mod, only add/change assets in your mod folder and not in the main game folder, as they don't get shared with others if you upload the mod. Also if you want to replace existing assets just make a copy of the same file in your mod folder with the same name and the game will load this one instead of the original one if your mod is activated. See mods as additiv on top of the game.'''<br />
<br />
==Basic setup==<br />
<br />
Setting up a new mod is rather simple:<br />
<br />
Navigate to the folder where you have installed the game. <br />
<br />
In the game folder open the ./mods folder.<br />
<br />
There you should find a zip file called "basicMod.zip"<br />
<br />
Extract this zip file into the mods folder and rename the folder (Should be called ./basicMod) to the name of your mod.<br />
<br />
<span style="color:#C00000">'''Important Note: Rename the "_mod-info.json" into "mod-info.json" in the root folder of your mod or it will not show up in the list.'''</span><br />
<br />
Optional you can make the changes manually. See the structure below.<br />
<br />
Now to make new files you need to have the same folder structure the main game has so add this folder first in your new mod folder:<br />
<br />
===Folders===<br />
<br />
#./characters<br />
#./enemies<br />
#./gfx/anim/menu<br />
#./gfx/anim/objects<br />
#./gfx/anim/specialfx<br />
#./gfx/anim/ui<br />
#./gfx/anim/units<br />
#./gfx/objects<br />
#./gfx/lights<br />
#./gfx/menu<br />
#./gfx/sets<br />
#./gfx/specialfx<br />
#./gfx/tiles<br />
#./gfx/ui<br />
#./gfx/units/player<br />
#./gfx/units/enemies<br />
#./levels<br />
#./lists<br />
#./music<br />
#./particles<br />
#./sfx<br />
#./squads<br />
#./textfiles<br />
#./tutorials<br />
<br />
==What goes where==<br />
See list above to understand where to put what files afterwards<br />
<br />
#The character definition files go here<br />
#The enemies definition files go here<br />
#.anim files for the main menu go here<br />
#.anim files for the objects go here<br />
#.anim files for the special fx go here<br />
#.anim files for the ui elements go here<br />
#.anim files for units go here (enemies and characters) <br />
#All objects go here. See here for naming rules: [[File_names_for_objects]]<br />
#All light brushes go here (png)<br />
#All menu related gfx here (Intro/logo and the character portraits etc)<br />
#All animation sets go here ([[Animation Sets]]<br />
#All Special fx related pngs go here ([[Special FX]])<br />
#All tilessheets goe here. ([[Tilesets]])<br />
#All UI related assets go here (map etc)<br />
#All player related animation gfx go here ([[Characters]])<br />
#All the enemy animation pngs go here ([[Enemies]])<br />
#All your mapfiles you make with the editor should be saved here. ([[Map Editor Overview]])<br />
#Definition json files go here. (Items etc: [[How to change and add Items and other things]])<br />
#The Music goes here ([[Music and Sound FX]])<br />
#Die particle pngs go here. (The are png of the die frame that will be used to calculate the disintegrate effect when someone dies)<br />
#Sound fx here ([[Music and Sound FX]])<br />
#Store the default squads here.<br />
#All the ingame dialogues go here. ([[How to write a dialogue]])<br />
#pngs of your tutorial texts you want to show ingame to help the player to get into your mod.<br />
<br />
===Activating the mod===<br />
<br />
'''Important:'''As next step you need to rename the "_mod-info.json" into "mod-info.json" and fiill it out with the information you want. (Presume that you have extracted the zip file provided.) If you make it manually copy over the "mod-info.json" from the game mode + mod and change it as you need.<br />
<br />
If you have extracted the basicMod.zip instead of manually setting it up, just open the mod-info.json and change the entries to match your mod.<br />
<br />
Now that you prepared the mod it is time to activate it. Start the game and go to the option panel.<br />
In the option panel you should find now the newly named mod of yours. Check the box next to it.<br />
<br />
You are done. Each time you start the game or play the game from the editor your mod will be used additionally to all other mods you may have activated.<br />
<br />
===The Street===<br />
On Steamworkshop you can find a mini mod with new assets and a new progress to tinger with.<br />
<br />
Todo: Link<br />
<br />
[[File:TheStreet.png]]<br />
<br />
Search for "The Street". It shows quit well how you can make a completely different looking game</div>Seminushttp://robotality.com/wiki/index.php?title=Music_and_Sound_FXMusic and Sound FX2014-09-22T13:34:41Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
<br />
A short overview of the audio part of the game.<br />
<br />
Folder: <br />
*./yourModName/music<br />
*./yourModName/sfx<br />
<br />
===Sound format===<br />
<br />
The file format for the sound fx should be .wav files. You have to copy them into one of the subfolders you can find here:<br />
<br />
./assets/sfx<br />
<br />
Don't forget you have to add them to the audio.conf file to tweak their loudness compared to the rest of the sounds.<br />
<br />
If you want to add a new sfx to an weapon, change the following part in the [[Weapons.json]]:<br />
<br />
"weaponSfxSet" : "yourSoundFile01",<br />
<br />
Recommended sound file settings: <br />
<br />
*Samplerate: 44100<br />
*Bit per sample: 16<br />
<br />
===Music format===<br />
<br />
For music we use the open source sound format OGG ([[http://en.wikipedia.org/wiki/Vorbis]]). <br />
<br />
You need to put the files in this folder:<br />
<br />
./assets/music<br />
<br />
Please note that all the sound tracks should have two variations, one for none combat situations and one for the combat. (The homebase track is a special case in the main game)<br />
<br />
To add music to a level you need a trigger placed in your level. For details check this page out: [[Background Music]]<br />
<br />
===audio.conf===<br />
<br />
In the audio.conf, that you can find in the ./assets/sfx folder, you can finetune the loudness of the audio files in the game. The settings are floats from 0.0 to 1.0.</div>Seminushttp://robotality.com/wiki/index.php?title=Masks_and_Atlas_buildingMasks and Atlas building2014-09-22T11:34:57Z<p>Seminus: Created page with "==Overview== All gfx files (objects and character/enemies etc) needs a mask and need to be added to an atlas to improve render performance. No worries, both is an automati..."</p>
<hr />
<div>==Overview==<br />
<br />
All gfx files (objects and character/enemies etc) needs a mask and need to be added to an atlas to improve render performance. <br />
<br />
No worries, both is an automatic process and will be done as soon as you restart your editor. <br />
<br />
===How it works===<br />
<br />
On startup, the editor checks if something has changed in the folder of your mod. If this is the case the editor will create all the masks you need and add all the new gfx to the atlas.<br />
This may take a few seconds depending on your system and how many assets your project has.<br />
<br />
'''Improtant:'''New assets are only availble to you in the editor if you did this atlas packing (restart of editor) after adding them to your folder.</div>Seminushttp://robotality.com/wiki/index.php?title=EnemiesEnemies2014-09-22T10:05:11Z<p>Seminus: Created page with "==Overview== See Characters for references. '''Note:''' Enemies are often a bit different and special cases. It makes sense to have a look at the enemies from the main..."</p>
<hr />
<div>==Overview==<br />
<br />
See [[Characters]] for references. <br />
<br />
'''Note:''' Enemies are often a bit different and special cases. It makes sense to have a look at the enemies from the main game and how they are named.</div>Seminushttp://robotality.com/wiki/index.php?title=CharactersCharacters2014-09-22T10:03:00Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
<br />
Characters and enemies are all having 8 directions they can look. But only 5 are actually made, the other 3 are mirrored over in the [[Animation Sets]].<br />
<br />
But you can also make all 8 directions if you like, we did that for turrets too. Just make sure you have the right settings set in the [[Animation Sets]]<br />
<br />
Looking for all the character art? Here you go: [http://robotality.com/downloads/playerCharacters.zip Download Character]<br />
<br />
Looking for enemies: [http://robotality.com/downloads/HalfwayEnemies.zip Download Enemies]<br />
<br />
===Location===<br />
<br />
The pngs are placed in the folder: <br />
<br />
./gfx/units/enemies<br />
<br />
./gfx/units/player<br />
<br />
The animation files are placed in this folder:<br />
<br />
./gfx/anim.<br />
<br />
Use the right subfolders for the anim files or else they won't get loaded.<br />
<br />
Find out more about the anim files and how to make them over here: [[Gif Processor]]<br />
<br />
===Filenames===<br />
<br />
Here is how an character should be namend:<br />
<br />
name#Animation#Direction.png<br />
<br />
Here the example of Wallace:<br />
<br />
jennaWallace#Cover#DownRight.png<br />
<br />
====Animations you need====<br />
<br />
*Cover<br />
*CoverHit<br />
*Hit<br />
*Idle<br />
*Ko<br />
*Run<br />
*ShootAim<br />
*ShootFire<br />
*ShootReturn<br />
*Strike<br />
*Throw<br />
<br />
Please note, some enemies have different animations they need. (turrets for example) Just check them out in the main game for reference.<br />
<br />
====Direction you need====<br />
<br />
*Down<br />
*DownRight<br />
*Right<br />
*Up<br />
*UpRight<br />
<br />
The other ones are beeing mirrored versions of the ones listed above.<br />
<br />
'''Please note:''' The cover related animation only have 4 animations. They use this directions:<br />
<br />
*DownRight<br />
*LeftDown<br />
*LeftUp<br />
*UpRight<br />
<br />
The enemies normally only have 2 directions:<br />
<br />
*DownRight<br />
*UpRight</div>Seminushttp://robotality.com/wiki/index.php?title=TilesetsTilesets2014-09-22T08:43:03Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
<br />
Foldername ./"yourModName"/gfx/tilesets<br />
<br />
Tilesets are sheets that contain the basic levelblocks you need for making a level in Halfway. The you look like this:<br />
<br />
[[file:StandardTiles001.png]]<br />
<br />
They have to be placed in the ./assets/gfx/tiles folder and you need to add them to the tileset.txt file. (See below for rules)<br />
<br />
'''Tips:'''<br />
* Arrange the tiles clever. It will save you tons of time in the editor later on as you can copy bigger sets as brush in one run.<br />
* Don't make them bigger then 32*32<br />
* For other things the floors, wall and borders use objects instead of tiles.<br />
<br />
===How to make a tileset===<br />
<br />
We highly recommed using [[http://www.pyxeledit.com/|PyxelEdit]] for making the tilesets. You can watch Simon doing a tileset in that tool over here on youtube:<br />
<br />
https://www.youtube.com/watch?v=WY9gYYupAqo<br />
<br />
====Borders====<br />
If you make the borders, the part between floor and wall or between wall and the void, for a tileset make sure you have all variations done.<br />
Here is an example for a border tileset containing all variations:<br />
<br />
[[file:Borders001.png]]<br />
<br />
The exact same variations are needed for borders on the floor.<br />
<br />
====Drop shadows====<br />
<br />
To make the whole level more readable we use some sort of static "sky light" that cast a 45° shadow from all walls. We highly recommend you to do the same, even if it is not logical, but it increases the readability of your map by the factor X.<br />
<br />
Here is how we make the shadows tiles:<br />
<br />
[[file:Shadows001.png]]<br />
<br />
===tilesets.txt===<br />
<br />
In this tilesets.txt you need to define what the tile indices are:<br />
<br />
0,standardTiles001.png<br />
1000,borders001.png<br />
2000,shadows001.png<br />
<br />
This is easy: just add the starting number of the tile and the file name that is containing the tiles. <br />
The game then makes the numbers by them self. You only need to be aware of the amount of tiles you have on a sheet and make the next tileset start number big enough, that they can not overlap.<br />
<br />
I usually use 1000 steps just to be sure.<br />
<br />
'''Important: The indices always need to be unique, <br> so if you want to add new ones make sure you copy<br> over the tilesets.txt and add a number higher then 5500 to start with. <br>Additionally never change the indices from existing <br> tilesets or it will break the game badly.'''<br />
<br />
<br />
===Known issues===<br />
<br />
*The indices can't be changed after you using them in the levels. This would break your level files.<br />
*The tilesets are the only things you can not use additiv in mods. So if two mods are adding new tiles this could lead into none unique tileset indices.<br />
*Indices have to be unique.</div>Seminushttp://robotality.com/wiki/index.php?title=Special_FXSpecial FX2014-09-19T15:24:42Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
<br />
Here you find most of the information you need for making your own shots effects etc. If you want to make effects that are placed in the level make them as [[File names for objects|Objects]] and place them this way. This chapter here is about player and enemy effects.<br />
<br />
===Weapon effects===<br />
Weapon effects are always done as a pack of effects including:<br />
<br />
*Shot itself<br />
*Muzzle<br />
*Hit effect<br />
*Miss effect<br />
*Trail (Sniper only)<br />
<br />
If you want you can animate all the effects you want too. But don't forget to make the .anim file then.<br />
<br />
====Naming Rules====<br />
<br />
here is how you have to name the weapon effects in order to work:<br />
<br />
*name01.png<br />
*name01hit.png<br />
*name01miss.png<br />
*name01muzzle.png<br />
*name01trail.png (sniper shots only)<br />
<br />
Replace name01 with your weapon name you want.<br />
<br />
====How to add a weapon effect to a weapon====<br />
<br />
On how to create a weapon go over to this page: [[Weapons.json]]<br />
<br />
To add this weapon Fx here called name01.png edit this line in the json:<br />
<br />
"bulletType" : "name01",<br />
<br />
just use the shot png name without the file extensions.<br />
<br />
'''Tip:''' If you want to leave some effects away for a shot, just make the png empty and add it this way. This is the workaround because the game always needs those files.<br />
<br />
===Shells===<br />
<br />
Shells are small pngs that can be named as you want, but need to be in the ./specialfx folder.<br />
<br />
To give a weapon a new shell you need to add it to the weapon in the [[Weapons.json]] at this line:<br />
<br />
"shellType" : "yourShellName",</div>Seminushttp://robotality.com/wiki/index.php?title=Enemy_Unit_FilesEnemy Unit Files2014-09-19T14:31:25Z<p>Seminus: Created page with "==Overview== The enemy json file works exactly like the Character Unit Files but for your enemies. So go there to get you informations. ;) ==Example== { "class" : "Co..."</p>
<hr />
<div>==Overview==<br />
<br />
The enemy json file works exactly like the [[Character Unit Files]] but for your enemies. So go there to get you informations. ;)<br />
<br />
==Example==<br />
<br />
{<br />
"class" : "ComputerUnitDefinition",<br />
"name" : "Infested Mechanic",<br />
"unitSfxSet" : "infested01",<br />
"shortName" : "Mechanic",<br />
"aiArchetype" : "Berserker",<br />
"recycledEnergyBonus" : 5,<br />
"actionPoints" : 2,<br />
"attacksPerTurn" : 1,<br />
"healthPoints" : 1,<br />
"aimingPoints" : 10,<br />
"agilityPoints" : 5,<br />
"visibilityRange" : 25,<br />
"hearingRange" : 24,<br />
"experience" : 0,<br />
"level" : 1,<br />
"movementSpeed" : 140,<br />
"weapon" : {<br />
"class" : "Weapon",<br />
"itemId" : "infested01Johannsen"<br />
},<br />
"itemOne" : null,<br />
"itemTwo" : null,<br />
"suit" : null,<br />
"backpack" : {<br />
"class" : "Backpack",<br />
"capacity" : 8,<br />
"items" : []<br />
}<br />
}</div>Seminushttp://robotality.com/wiki/index.php?title=Character_Unit_FilesCharacter Unit Files2014-09-19T14:29:46Z<p>Seminus: /* Description */</p>
<hr />
<div>==Overview==<br />
<br />
The charact unit files are the place where you define the start stats and items of each character. They are here to set the character attributes etc when you pick up a character for the very first time in the game.<br />
<br />
<br />
==Example==<br />
<br />
{<br />
"class" : "UnitDefinition",<br />
"name" : "Josh Connor",<br />
"shortName" : "Josh C.",<br />
"gender" : "Male",<br />
"citizenship" : "B-Class Neutral",<br />
"unitTypeName" : "joshConnor",<br />
"actionPoints" : 2,<br />
"attacksPerTurn" : 2,<br />
"healthPoints" : 5,<br />
"aimingPoints" : 4,<br />
"agilityPoints" : 6,<br />
"visibilityRange" : 90,<br />
"hearingRange" : 10,<br />
"experience" : 0,<br />
"level" : 1,<br />
"movementSpeed" : 140,<br />
"faction" : "Human",<br />
"weapon" : { "class": "Weapon", "itemId": "shortRange03MK01" },<br />
"itemOne" : null, <br />
"itemTwo" : null,<br />
"suit": { "class": "Suit", "itemId": "scoutSuit01" },<br />
"backpack" : {<br />
"class" : "Backpack",<br />
"capacity" : 8,<br />
"items" : [<br />
{ "class": "Item", "itemId": "StandardAmmunition", "itemType": "Ammunition" },<br />
{ "class": "UsableItem", "itemId": "medkit01", "itemType": "Item" }<br />
]<br />
}<br />
}<br />
<br />
===Description===<br />
<br />
'''Note:'''If the point is very obvious I just let it our here. ;)<br />
<br />
'''"class" : ''' Ignore this.<br />
<br />
'''"name" :''' The name of the character<br />
<br />
'''"shortName" :''' The short name that is used under the portraits in the UI.<br />
<br />
'''"citizenship" : ''' This is just for story background. (What level in society each character has.) (This is optional)<br />
<br />
'''"unitTypeName" : '''The unit file you have in the the ./characters folder. (minus the file ending)<br />
<br />
'''"actionPoints" :''' How many AP the character has.<br />
<br />
'''"attacksPerTurn" :''' How many attacks a character has per turn.<br />
<br />
'''"healthPoints" :''' How many health point the character has. (Note this is the health attribute of the character. the health actually is 2*HealthPoints, in Joshs case its 10)<br />
<br />
'''"aimingPoints" :''' The base aiming attribute.<br />
<br />
'''"agilityPoints": ''' The base agility attribute<br />
<br />
'''"visibilityRange" :''' How far in tiles the character can see enemies.<br />
<br />
'''"hearingRange" :''' How far the character can hear in tiles. ('''Note:'''This get used only by the AI atm. for character it is not used)<br />
<br />
'''"experience" :'''Not used anymore (Is obsolete)<br />
<br />
'''"level" :''' Not used anymore (Is obsolete)<br />
<br />
'''"movementSpeed" :''' How fast the character moves visually. This should be synchronized with the animation of the character to prevent visual sliding/moon walking. This value has nothing to do with the gameplay and how far a character can walk. (See agility for that)<br />
<br />
'''"faction" :''' What faction this character belongs to. For players there are only human at the moment. (This is optional)<br />
<br />
''' "weapon" :'''What weapon the character has equipped if you are picking him up. Get the id from the [[weapons.json]] (use "null" if none) <br />
<br />
'''"itemOne" and "itemTwo"''': This is not used anymore. please set it to null.<br />
<br />
'''"suit":''' What suit the character is wearing. Use the ID from the [[suits.json]] please always give the character some sort of suit or else it could get some crashes ingame. We created a Standard Ship Overall with 0 armor etc for this case. (Or make your own)<br />
<br />
'''"backpack" :''' Here you can define what items the character has in its backpack and how big it is. '''Please note:''' Enemies can only have medkits and grenades in the backpack. If you place some they will use it if defined in the AI brain. See [[Ai archetypes.json]]</div>Seminushttp://robotality.com/wiki/index.php?title=Weapons.jsonWeapons.json2014-09-19T14:27:45Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
<br />
In the weapon.json all the weapons are defined. There categories we have in the game are artifical an can be done differently if you want. (Using different [[accuracyCurves.json]] and damage distribution.)<br />
<br />
This goes for player and for AI weapons.<br />
<br />
'''Info:''' Weapons can have random values that are set when the level is loaded and the stay the same until the end of the game. (using a seed number) You can switch that of by setting the random range to 0.<br />
<br />
==Example:==<br />
{<br />
"itemList" : [<br />
{<br />
"class" : "Weapon",<br />
"itemId" : "shortRange01MK01",<br />
"itemType" : "Weapon",<br />
"weaponSfxSet" : "shortRange01",<br />
"ownership" : "Player",<br />
"weaponType" : "ShortRange",<br />
"name" : "Pacifier MK-I",<br />
"shortName" : "Pacifier I",<br />
"iconId" : "shortRange01",<br />
"magazineSize" : 3,<br />
"minDamage" : 4,<br />
"maxDamage" : 6,<br />
"minDamageRandomRange" : 1,<br />
"maxDamageRandomRange" : 2,<br />
"minStrikeDamage" : 1,<br />
"maxStrikeDamage" : 5,<br />
"minStrikeDamageRandomRange" : 1,<br />
"maxStrikeDamageRandomRange" : 1,<br />
"critChance" : 2,<br />
"critDamage" : 6,<br />
"bulletType" : "sRangeMKI01",<br />
"bulletSpeed" : 500,<br />
"shotNumber" : 1,<br />
"aimDelay" : -0.1,<br />
"fireDelay" : -0.5,<br />
"fireVariance" : 0.01,<br />
"muzzleTime" : 0.05,<br />
"hasMuzzle" : true,<br />
"closeCombat" : false,<br />
"accuracyRating" : 6,<br />
"accuracyCurveId" : "shortRange01Curve",<br />
"baseAccuracy" : 80,<br />
"baseAccuracyRandomRange" : 3,<br />
"buyValue" : 270,<br />
"sellValue" : 15,<br />
"shellType" : "shell001",<br />
"description" : "The pacifier is the standard short-range weapon as used by the Goliath's security personnel. The electric discharge strength can be adjusted freely and is able to inflict severe pain on the target.",<br />
"attributes" : [<br />
"Short-Range"<br />
]<br />
},<br />
<br />
<br />
===Description===<br />
<br />
'''"class" : ''' Weapon<br />
<br />
'''"itemId" : ''' Unique ID of the weapon.<br />
<br />
'''"itemType" : ''' Weapon<br />
<br />
'''"weaponSfxSet" : ''' What sound FX are used for this gun.<br />
<br />
'''"ownership" : ''' Can be Player or Enemy.<br />
<br />
'''"weaponType" : ''' What type of weapon it is. (Only description in the UI here)<br />
<br />
'''"name" : ''' The full name of the gun.<br />
<br />
''"shortName" :' ''' The short name of the weapon used in small UI elements. Keep it really short.<br />
<br />
'''"iconId" :''' The icon png name for the UI.<br />
<br />
'''"magazineSize" : ''' How big the magazine of the weapon is. Please make sure it is dividable by shotNumber.<br />
<br />
'''"minDamage" : '''Min base shot damage.<br />
<br />
''"maxDamage" : '''Max base shot damage.<br />
<br />
'''"minDamageRandomRange" : ''' Random min value for shot damage, when the weapon gets created.<br />
<br />
'''"maxDamageRandomRange" :''' Random max value for shot damage, when the weapon gets created.<br />
<br />
'''"minStrikeDamage" : ''' Min base strike damage.<br />
<br />
''"maxStrikeDamage" : '''Max base strike damage.<br />
<br />
'''"minStrikeDamageRandomRange" : '''Random min value for strike damage, when the weapon gets created.<br />
<br />
'''"maxStrikeDamageRandomRange" : ''' Random max value for strike damage, when the weapon gets created.<br />
<br />
'''"critChance" : ''' Ho high the base chances are for a crit hit in %. (Character skill add to it too)<br />
<br />
'''"critDamage" : ''' How high the crit damage is. (gets added to the normal damage)<br />
<br />
'''"bulletType" : ''' This defines the whole specialFX of an weapon including the bullet, muzzle, hit and miss effects. See [[Special FX]] for naming rules<br />
<br />
'''"bulletSpeed" : ''' How fast the bullet flies.<br />
<br />
'''"shotNumber" :''' How many shots get fired by the weapon if the player is making an attack.<br />
<br />
'''"aimDelay" :''' Ignore, this are render options. Just copy over.<br />
<br />
'''"fireDelay" : ''' Ignore, this are render options. Just copy over.<br />
<br />
'''"fireVariance" : ''' Ignore, this are render options. Just copy over.<br />
<br />
'''"muzzleTime" : ''' Ignore, this are render options. Just copy over.<br />
<br />
'''"hasMuzzle" :''' True/False: will a muzzle be rendered when shooting?<br />
<br />
'''"closeCombat" : ''' Can be True/false if true it only has a range of 1 tile. (See infested01 weapons)<br />
<br />
'''"accuracyRating" : ''' This is obsolete. Ignore it.<br />
<br />
'''"accuracyCurveId" : '''Here you define which curve the weapon is going to use. (ID can be found in the [[accuracyCurves.json]] )<br />
<br />
'''"baseAccuracy" :''' The base value of accuracy in %. The higher the better the weapon will hit.<br />
<br />
'''"baseAccuracyRandomRange" : ''' The random range for the accuracy value when creating the weapon. (in %)<br />
<br />
'''"buyValue" : ''' The cost if you would buy the weapon. (Is currently not possible)<br />
<br />
'''"sellValue" :''' The ammount of energy you get if you recycle it.<br />
<br />
'''"shellType" : ''' What shell falls out of the gun. (They can be found in the ./gfx/specialFX, remove the .png ending for this ID)<br />
<br />
'''"description" : ''' The description of the weapon. (Shown ingame when hovering over the item.)<br />
<br />
'''"attributes" : ''' This is obsolete. Ignore it.</div>Seminushttp://robotality.com/wiki/index.php?title=Animation_SetsAnimation Sets2014-09-19T14:19:51Z<p>Seminus: /* OVerview */</p>
<hr />
<div>==Overview==<br />
<br />
In this set files you define how the animations are set up and if they are mirrored copies of another animation.<br />
<br />
'''Info:''' To save work time and memory only 5 directions are actually done for each character. The other 3 are mirrored versions of the first 5.<br />
<br />
But that has not to be the case: For example the turrets have 8 hand made animations so for each direction on. But overall you need at least 5 direction to make the 8 needed for the game. <br />
<br />
Se below for a example of such a file. To create your own, I highly recommend to copy over an existing one and exchange the names you need.<br />
<br />
All character and enemies need suche a file.<br />
<br />
'''Important:''' The file needs to have the same name as the *.unit files for enemies and character but with a .set as ending instead.<br />
<br />
==Example==<br />
<br />
{<br />
"unitType": "ginaNia",<br />
"animations": {<br />
"Idle": [<br />
{ "animation": "ginaNia#Idle#Up", "mirrored": false },<br />
{ "animation": "ginaNia#Idle#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Idle#Right", "mirrored": false },<br />
{ "animation": "ginaNia#Idle#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Idle#Down", "mirrored": false },<br />
{ "animation": "ginaNia#Idle#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Idle#Right", "mirrored": true },<br />
{ "animation": "ginaNia#Idle#UpRight", "mirrored": true }<br />
],<br />
"Run": [<br />
{ "animation": "ginaNia#Run#Up", "mirrored": false },<br />
{ "animation": "ginaNia#Run#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Run#Right", "mirrored": false },<br />
{ "animation": "ginaNia#Run#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Run#Down", "mirrored": false },<br />
{ "animation": "ginaNia#Run#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Run#Right", "mirrored": true },<br />
{ "animation": "ginaNia#Run#UpRight", "mirrored": true }<br />
],<br />
"Hit": [<br />
{ "animation": "ginaNia#Hit#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Hit#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Hit#Right", "mirrored": false },<br />
{ "animation": "ginaNia#Hit#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Hit#Down", "mirrored": false },<br />
{ "animation": "ginaNia#Hit#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Hit#Right", "mirrored": true },<br />
{ "animation": "ginaNia#Hit#UpRight", "mirrored": true }<br />
],<br />
"Cover": [<br />
{ "animation": "ginaNia#Cover#UpRight", "mirrored": true },<br />
{ "animation": "ginaNia#Cover#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Cover#LeftUp", "mirrored": true },<br />
{ "animation": "ginaNia#Cover#LeftDown", "mirrored": true },<br />
{ "animation": "ginaNia#Cover#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Cover#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Cover#LeftDown", "mirrored": false },<br />
{ "animation": "ginaNia#Cover#LeftUp", "mirrored": false }<br />
],<br />
"CoverHit": [<br />
{ "animation": "ginaNia#CoverHit#UpRight", "mirrored": true },<br />
{ "animation": "ginaNia#CoverHit#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#CoverHit#LeftUp", "mirrored": true },<br />
{ "animation": "ginaNia#CoverHit#LeftDown", "mirrored": true },<br />
{ "animation": "ginaNia#CoverHit#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#CoverHit#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#CoverHit#LeftDown", "mirrored": false },<br />
{ "animation": "ginaNia#CoverHit#LeftUp", "mirrored": false }<br />
],<br />
"ShootAim": [<br />
{ "animation": "ginaNia#ShootAim#Up", "mirrored": false },<br />
{ "animation": "ginaNia#ShootAim#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#ShootAim#Right", "mirrored": false },<br />
{ "animation": "ginaNia#ShootAim#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#ShootAim#Down", "mirrored": false },<br />
{ "animation": "ginaNia#ShootAim#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#ShootAim#Right", "mirrored": true },<br />
{ "animation": "ginaNia#ShootAim#UpRight", "mirrored": true }<br />
],<br />
"ShootFire": [<br />
{ "animation": "ginaNia#ShootFire#Up", "mirrored": false },<br />
{ "animation": "ginaNia#ShootFire#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#ShootFire#Right", "mirrored": false },<br />
{ "animation": "ginaNia#ShootFire#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#ShootFire#Down", "mirrored": false },<br />
{ "animation": "ginaNia#ShootFire#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#ShootFire#Right", "mirrored": true },<br />
{ "animation": "ginaNia#ShootFire#UpRight", "mirrored": true }<br />
],<br />
"ShootReturn": [<br />
{ "animation": "ginaNia#ShootReturn#Up", "mirrored": false },<br />
{ "animation": "ginaNia#ShootReturn#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#ShootReturn#Right", "mirrored": false },<br />
{ "animation": "ginaNia#ShootReturn#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#ShootReturn#Down", "mirrored": false },<br />
{ "animation": "ginaNia#ShootReturn#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#ShootReturn#Right", "mirrored": true },<br />
{ "animation": "ginaNia#ShootReturn#UpRight", "mirrored": true }<br />
],<br />
"Strike": [<br />
{ "animation": "ginaNia#Strike#Up", "mirrored": false },<br />
{ "animation": "ginaNia#Strike#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Strike#Right", "mirrored": false },<br />
{ "animation": "ginaNia#Strike#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Strike#Down", "mirrored": false },<br />
{ "animation": "ginaNia#Strike#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Strike#Right", "mirrored": true },<br />
{ "animation": "ginaNia#Strike#UpRight", "mirrored": true }<br />
],<br />
"Throw": [<br />
{ "animation": "ginaNia#Throw#Up", "mirrored": false},<br />
{ "animation": "ginaNia#Throw#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Throw#Right", "mirrored": false },<br />
{ "animation": "ginaNia#Throw#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Throw#Down", "mirrored": false },<br />
{ "animation": "ginaNia#Throw#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Throw#Right", "mirrored": true },<br />
{ "animation": "ginaNia#Throw#UpRight", "mirrored": true }<br />
],<br />
"Ko": [<br />
{ "animation": "ginaNia#Ko#UpRight", "mirrored": true },<br />
{ "animation": "ginaNia#Ko#UpRight", "mirrored": false },<br />
{ "animation": "ginaNia#Ko#LeftUp", "mirrored": true },<br />
{ "animation": "ginaNia#Ko#LeftDown", "mirrored": true },<br />
{ "animation": "ginaNia#Ko#DownRight", "mirrored": false },<br />
{ "animation": "ginaNia#Ko#DownRight", "mirrored": true },<br />
{ "animation": "ginaNia#Ko#LeftDown", "mirrored": false },<br />
{ "animation": "ginaNia#Ko#LeftUp", "mirrored": false }<br />
]<br />
}<br />
}</div>Seminushttp://robotality.com/wiki/index.php?title=Suits.jsonSuits.json2014-09-19T13:59:59Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
<br />
Sutis are the armor for the player and the enemies. So if you want add a new suit you have to do it here.<br />
<br />
A suit can have the following effects:<br />
<br />
#Reduces the damage (armor)<br />
#Having a shield<br />
#Change your skills while wearing it.<br />
<br />
'''Note:''' Enemy armor are essentially the same as player suits but do not have any skill changing attributes.<br />
<br />
==Example==<br />
<br />
<br />
{<br />
"class" : "Suit",<br />
"itemId" : "scoutSuit02",<br />
"itemType" : "Suit",<br />
"name" : "Scout Suit MK-II",<br />
"shortName" : "Scout II",<br />
"description" : "Scout Suits MK-II were developed for fast moving scouting troops. By utilising the latest in shield technology these suits are light and don't rely on heavy armor materials.",<br />
"iconId" : "scoutSuit",<br />
"consumable" : false,<br />
"shield" : 11,<br />
"armor" : 0.05,<br />
"rechargeTime" : 4,<br />
"buyValue" : 450,<br />
"sellValue" : 25,<br />
"attributes" : [<br />
{<br />
"attribute" : "Agility",<br />
"amount" : 1<br />
}<br />
]<br />
},<br />
<br />
===Description:===<br />
<br />
Most of the values should be self explaining here. Some info thought on options:<br />
<br />
'''Attribute:''' There are three attributes you can choose from: '''Agility''', '''Health''' and '''Aiming'''. The can be used to increase or decrease the skill values of the character that uses the suit. Please note that you can have multiple attribute changes if you want.<br />
<br />
'''iconID:''' Is the name of the icon that gets shown in the UI.<br />
<br />
'''armor:''' The armor value goes from 0-1 and 1 beeing 100%. So the armor in this example absorbs 5% damage that goes through the shield.<br />
<br />
'''Note:''' The item ID needs to be unique.</div>Seminushttp://robotality.com/wiki/index.php?title=LevelPoints.jsonLevelPoints.json2014-09-19T13:15:00Z<p>Seminus: /* The values */</p>
<hr />
<div>==Overview==<br />
<br />
In this json and the [[ProgressPacks.json]] are the ones that define the progress of the game and how the overview maps looks.<br />
<br />
==Example Level Point==<br />
<br />
{<br />
"id" : "level01b",<br />
"map" : "01_WakeUpCall_b.hmap",<br />
"title" : "Engine Room: Storage C3-Y1 ",<br />
"description" : "-",<br />
"requiredCharacters" : [<br />
"mortenLannis",<br />
"lindaCarter"<br />
],<br />
"levelType" : "End",<br />
"connectsFrom" : "level01a",<br />
"position" : {<br />
"x" : 70,<br />
"y" : 220<br />
}<br />
},<br />
===Description===<br />
<br />
===How it works===<br />
<br />
There are two steps you need to do in order to have a map point placed on the overview map and having it activated:<br />
#You need to add a level point to this json. It contains all the information needed for the level and the map.<br />
#You need to unlock it at the right position in the [[ProgressPacks.json]].<br />
<br />
====The values====<br />
<br />
'''"id" :''' This is an unique id for the level. (you will need it over in the [[ProgressPacks.json]]. Be sure it is unique.<br />
<br />
'''"map" :''' What map file it is loading when reaching this level. (This needs to be the exact name of the level and it needs to be placed in the root folder of the ./levels folder.<br />
<br />
'''"title" :''' The title name shown on the overview map when you are hovering over it.<br />
<br />
'''"description" :''' The mission briefing text shown in the info box when hovering over a level point. (user \n for line breaks)<br />
<br />
'''"requiredCharacters" :''' Use this to define which character has to come in the mission. This is important when you having dialogs and you have to make sure that the character are there to speak their roles. Use the file names as id, that you can find in the ./characters folder without the .unit ending.<br />
<br />
'''"levelType" :''' There are 4 types: Normal, End, Optional and Homebase. This defines how the level point looks like on the map. You can replace the assets if you like, so you have 4 different types. <br />
<br />
'''"connectsFrom" :''' Use the Id from the level that you are connecting from. So in our example we connect from the first level level1a. This is needed to draw the connection lines between levels. (Note: this can be nonlinear)<br />
<br />
'''"position" :''' The X and Y coordinate of the map point. You have to know some facts to make a usable map: <br />
<br />
#Make at least 20 pixel difference in between two points or the line won't get drawn.<br />
#If the line should be drawn, make sure you have them aligned in 90° to its connection level or else the line does not get dawn.<br />
#The coordinate system is not the screen coordinate system. it only represents the map screen.<br />
#This is a try and error thing. Sorry.<br />
<br />
==The Map==<br />
<br />
You can replace all the map elements if you like. To do so replace the files in the ./gfx/ui/map folder. (The one ending with HD are the one used. The others are obsolete.)</div>Seminushttp://robotality.com/wiki/index.php?title=ProgressPacks.jsonProgressPacks.json2014-09-19T12:40:33Z<p>Seminus: /* Description */</p>
<hr />
<div>==Overview==<br />
<br />
In this json you define the progress of the game. (Which levels are availible and what is your homebase level etc.)<br />
<br />
Please note that you have to define unique level points in the [[LevelPoints.json]] first before making the progress one.<br />
<br />
==Example==<br />
<br />
{<br />
"unlockAfter" : "Dummy.hmap",<br />
"homebase" : null,<br />
"availableIds" : [<br />
"level01a"<br />
],<br />
"unlockIds" : [<br />
"level01a"<br />
]<br />
},<br />
{<br />
"unlockAfter" : "01_WakeUpCall_a.hmap",<br />
"homebase" : null,<br />
"availableIds" : [<br />
"level01b"<br />
],<br />
"unlockIds" : [<br />
"level01b"<br />
]<br />
},<br />
{<br />
"unlockAfter" : "01_WakeUpCall_b.hmap",<br />
"homebase" : "homebaseAfterM01.hmap",<br />
"menuMap" : "menuMap02.hmap",<br />
"availableIds" : [<br />
"hbEngineRoom"<br />
],<br />
"unlockIds" : [<br />
"hbEngineRoom"<br />
]<br />
},<br />
<br />
==Description==<br />
<br />
'''"unlockAfter" : ''' UnlockAfter defines after which map the following progress defined in the parts below is set. This has always to be the real file name of the level and not the ID. (For the very first level just use: Dummy.hmap)<br />
<br />
'''"homebase" :''' Define which homebase level is loaded when returning to a homebase. (Use the real file name of the level.) <br />
<br />
'''Note:''' If you want to have new dialogs each time the player comes back after a mission, <br />
you need to make a copy of the homebase map and <br />
replace all the new dialoges. <br />
Then change the "homebase" tag here even if the map point is the same. <br />
If the position of the homebase is a new one, <br />
create a new level point for it in the [[LevelPoints.json]] too. <br />
If you do not have a homebase, set it to null.<br />
<br />
'''"menuMap" : ''' Defines what background map gets loaded in the main menu. The first one will always be menuMap01.hmap and is selected automatically, the rest can be named as you want.<br />
<br />
'''"availableIds" :''' Defines which levels are available to be played on the map. (ID are defined in the [[LevelPoints.json]])<br />
<br />
'''"unlockIds" :''' Defines which levels get unlocked after you finished the level named in the beginning. (ID are defined in the [[LevelPoints.json]])</div>Seminushttp://robotality.com/wiki/index.php?title=SkillDescriptions.jsonSkillDescriptions.json2014-09-19T12:38:01Z<p>Seminus: Created page with "==Overview== In this json the skills descriptions are placed. This has localization reasons only."</p>
<hr />
<div>==Overview==<br />
<br />
In this json the skills descriptions are placed. This has localization reasons only.</div>Seminushttp://robotality.com/wiki/index.php?title=Items.jsonItems.json2014-09-19T08:16:43Z<p>Seminus: </p>
<hr />
<div>== Overview==<br />
<br />
Currently there are 3 types you can create in Halfway. (One is ammo and currently static and can't be changed)<br />
<br />
*Ammo<br />
**This is currently static and can not be changed.<br />
*Grenades<br />
**You can edit them and create new ones for the player or the enemies.<br />
*Usable Items<br />
** This type of item has alot of sub items you can use and combine if you like, creating all new items for the player.<br />
<br />
Most of the points in the Items json should be self explaining. Just copy over the settings and changed them as you like.<br />
<br />
=== Item types ===<br />
<br />
====Grenades====<br />
<br />
Grenades deal splash damage to the enemies in its radius. The radius is 3 tiles wide and the damage falls with the distance from the center.<br />
<br />
In the center the base damage set in this json is dealt (minus armor etc)<br />
You can set for each new tileradius damage individually:<br />
<br />
"baseDamage" : 15,<br />
"maxThrowingDistance" : 10,<br />
"centreDamageFactor" : 1,<br />
"firstRowDamageFactor" : 0.6,<br />
"secondRowDamageFactor" : 0.3,<br />
<br />
You can also change the maximum reach for the grenade here. The explosion effect is defined with the:<br />
"projectileType" : "plasmaGrenade001", where as the plasmaGrenade001.png with out the png is used. You find this effect in the ./gfx/specialFX folder. <br />
<br />
'''Note:'''You can not change the radius of the splash damage at the moment.<br />
<br />
====Usable Items====<br />
<br />
Usable items have an effect on the player when used. They all disappear once used.<br />
<br />
'''Tip:''' An Item can have multiple effects at the same time. So feel free an combine them.<br />
<br />
=====Medkit=====<br />
<br />
The classic health kit. The CurrentHealth attribute defines how much health the player gets when used.<br />
<br />
=====Shieldrecharge=====<br />
<br />
Similar to the Medkit but it recharges the shield of your suit.<br />
<br />
=====Temp Stimpack=====<br />
<br />
Temp stimpacks are an experiment that failed and we removed them in the actual Halfway campain, as we found them to be useless.<br />
<br />
But we kept the functionality for you, the modders to have a toy to play with and to experiment with them.<br />
<br />
'''Some Informations:'''<br />
*Stims can have a positive effect over a certain time and they can have a negativ effect.<br />
*You have two points to change the effect:<br />
**When the Stim is consumed<br />
**When the first effect is running out.<br />
**Originally the idea was to have a pay back when consuming Stims after a time of positiv effects. But in the end they were not used by the player because they were not good enough having only a temp effect and then some negative ones.<br />
*They can have multiple effects so feel free and experiment with them. Especially the additional AP attribute can do interesting things. ;)<br />
<br />
<br />
<br />
=====Perma Stims=====<br />
<br />
The Permanent Stims are here for the level up of the character. <br />
<br />
In Halfway we made 3 levels of Stims:<br />
<br />
#Standard Stims: Give 1 Skill point to one Skill<br />
#Advanced Stims: Give 1 Skill point to two skills.<br />
#Super Stims: Give 1 Skill point to all 3 skills.<br />
<br />
You can combine and change this values as you like. <br />
<br />
'''Note:''' in the [[Balancing.json]] you can setup the maximum amount of stims a character can use before getting negative impacts.<br />
<br />
======How the negativ impact works======<br />
<br />
If the character takes more then 5 Stims he/she gets an risk that one of the skills (selected random and independend of the type of stim). With each stim he take more over the initial 5 the risk will gets higher until it is at 100%.<br />
<br />
'''Info:'''Currently you can only change the amount of stims that is used until the negative effect kicks in but not how fast it goes to 100% and what the effects are.<br />
<br />
<br />
====Attributes====<br />
<br />
This is a short overview of what type of attributes each item type can have, including a short description of what they do.<br />
<br />
For real references how to use it, just take a look at the samples below or check for your self in the items.json.<br />
<br />
=====Perma Stims=====<br />
*Health<br />
**This will level up the health skill for the character wenn used. <br />
*Aming<br />
**Levels up the aiming skill when used<br />
*Agility<br />
**Levels up the Agility skill when used.<br />
<br />
See the [[Balancing.json]] for how strong the level up effect is when getting a skill point.<br />
<br />
=====Temp Stims=====<br />
<br />
*ActionPoints<br />
**This gives the player temporarily X AP more for Y rounds<br />
*Aiming<br />
**This gives the player temporarily X aiming skill points more for Y rounds<br />
*Health<br />
**This gives the player temporarily X health more for Y rounds<br />
*Agility<br />
**This gives the player temporarily X agility more for Y rounds<br />
<br />
=====Usable Items=====<br />
<br />
*CurrentShield<br />
** This "heals" the shield of suit that the character is wearing by X points <br />
*CurrentHealth<br />
** This "heals" the health of the character by X points<br />
<br />
<br><br />
<br><br />
<br />
== Examples ==<br />
<br />
Here are some samples of each item type:<br />
<br />
===Grenades===<br />
<br />
{<br />
"class" : "Grenade",<br />
"itemId" : "grenade01",<br />
"itemType" : "Grenade",<br />
"ownership" : "Player",<br />
"name" : "Plasma Grenade MK-I",<br />
"shortName" : "Gren MK-I",<br />
"description" : "The G.S.A. plasma grenade was specifically developed for effective use on spaceships. Small explosion radius but highly concetrated heat damage.",<br />
"iconId" : "grenade",<br />
"consumable" : true,<br />
"projectileType" : "plasmaGrenade001",<br />
"baseDamage" : 15,<br />
"maxThrowingDistance" : 10,<br />
"centreDamageFactor" : 1,<br />
"firstRowDamageFactor" : 0.6,<br />
"secondRowDamageFactor" : 0.3,<br />
"buyValue" : 250,<br />
"sellValue" : 30<br />
},<br />
===Medkit===<br />
<br />
{<br />
"class" : "UsableItem",<br />
"itemId" : "medkit01",<br />
"itemType" : "Item",<br />
"itemSoundId" : "Medkit",<br />
"name" : "Medkit Small",<br />
"shortName" : "Meds",<br />
"description" : "Small medkit for treating minor wounds. Restores 5 HP. ",<br />
"iconId" : "medkit",<br />
"consumable" : true,<br />
"buyValue" : 49,<br />
"sellValue" : 5,<br />
"attributes" : [<br />
{<br />
"class" : "StatChangeAttribute",<br />
"attributeChanges" : [<br />
{<br />
"attribute" : "CurrentHealth",<br />
"amount" : 5<br />
}<br />
]<br />
}<br />
]<br />
},<br />
<br />
<br />
===ShieldBooster===<br />
<br />
{<br />
"class" : "UsableItem",<br />
"itemId" : "shieldBoost01",<br />
"itemSoundId" : "ShieldRecharge",<br />
"itemType" : "Item",<br />
"name" : "Shield Cell Small",<br />
"shortName" : "Shield",<br />
"description" : "A small energy cell for immediately recharging suit shields. Restores 5 shield points.",<br />
"iconId" : "shieldRecharge",<br />
"consumable" : true,<br />
"buyValue" : 49,<br />
"sellValue" : 5,<br />
"attributes" : [<br />
{<br />
"class" : "StatChangeAttribute",<br />
"attributeChanges" : [<br />
{<br />
"attribute" : "CurrentShield",<br />
"amount" : 5<br />
}<br />
]<br />
}<br />
]<br />
},<br />
===Temp Stim===<br />
<br />
{<br />
"class" : "UsableItem",<br />
"itemId" : "stimpackHealth01",<br />
"itemSoundId" : "Stimpack",<br />
"itemType" : "Item",<br />
"name" : "Health Stimpack MK-I",<br />
"shortName" : "Stim",<br />
"description" : "Increases health by 1 point for 3 turns. Produced and consumed mainly by B-Class citizens, this stimpack variant uses cheaper ingredients and is not as effective as other more saught after versions.",<br />
"iconId" : "stimpack",<br />
"consumable" : true,<br />
"buyValue" : 60,<br />
"sellValue" : 5,<br />
"attributes" : [<br />
{<br />
"class" : "StimPackAttribute",<br />
"initialBuffs" : [<br />
{<br />
"attribute" : "Health",<br />
"amount" : 1,<br />
"duration" : 3<br />
}<br />
],<br />
"onExpireBuffs" : [<br />
{<br />
"attribute" : "Health",<br />
"amount" : -1,<br />
"duration" : 2<br />
}<br />
]<br />
}<br />
]<br />
},<br />
<br />
<br />
=== Perma Stim/Level up Stim=== <br />
<br />
{<br />
"class" : "UsableItem",<br />
"itemId" : "aimingStim01",<br />
"itemSoundId" : "Stimpack",<br />
"itemType" : "Stimpack",<br />
"name" : "Aiming Stimpack",<br />
"shortName" : "Stim",<br />
"description" : "Standard G.S.A. Aiming Stimpack. This stim permanently increases aiming by 1.",<br />
"iconId" : "stimpack",<br />
"consumable" : true,<br />
"buyValue" : 600,<br />
"sellValue" : 60,<br />
"attributes" : [<br />
{<br />
"class" : "StatChangeAttribute",<br />
"attributeChanges" : [<br />
{<br />
"attribute" : "Aiming",<br />
"amount" : 1<br />
}<br />
]<br />
}<br />
]<br />
},<br />
<br />
<br />
==Known Issue==<br />
<br />
*Ammunition can't be edited yet. It is part of the source code.</div>Seminushttp://robotality.com/wiki/index.php?title=Balancing.jsonBalancing.json2014-09-18T15:11:55Z<p>Seminus: Created page with "==Overview== The balancing.json is manly used to set the overall balancing of skills and the game itself. Also it can be used to test out different balancing settings, without..."</p>
<hr />
<div>==Overview==<br />
The balancing.json is manly used to set the overall balancing of skills and the game itself.<br />
Also it can be used to test out different balancing settings, without changing all items and weapons.<br />
<br />
==The File==<br />
<br />
{<br />
"playerDamageFactor" : 1,<br />
"enemyDamageFactor" : 1,<br />
"halfDefenseModifier" : 15,<br />
"fullDefenseModifier" : 30,<br />
"agilityDefenseAmount" : 5,<br />
"defendActionModifier" : 0,<br />
"steadyShotCooldown" : 5,<br />
"headShotCooldown" : 3,<br />
"selfHealCooldown" : 10,<br />
"shieldRemoveCooldown" : 4,<br />
"berserkCooldown" : 10,<br />
"paralyseCooldown" : 4,<br />
"revealEnemiesCooldown" : 1,<br />
"teleportCooldown" : 2,<br />
"paralyseSkillDuration" : 3,<br />
"passiveSkillMedkitBonus" : 0.33,<br />
"passiveSkillMediumRangeBonus" : 10,<br />
"passiveSkillShieldBonus" : 0.33,<br />
"passiveSkillMartialBonus" : 0.33,<br />
"passiveSkillCritChanceBonus" : 0.33,<br />
"passiveSkillHealthRegenBonus" : 0.5,<br />
"buyValueFactor" : 1.0,<br />
"sellValueFactor" : 1.0,<br />
"aimingRange" : 25,<br />
"aimingPerPoint" : 5,<br />
"critBaseBonus" : 0.1,<br />
"critBonusPerAimingPoint" : 0.1,<br />
"aimingModifierBaseBonus" : 20,<br />
"aimingModifierPerAimingPoint" : 3,<br />
"stimpackLimit" : 5,<br />
"aimingRepeatBonus" : 5,<br />
"aimingRepeatModifierBonus" : 10<br />
}<br />
<br />
==Description==<br />
<br />
Please note the % values are sometimes in % and sometimes in float. Be careful which is which. ;)<br />
<br />
*playerDamageFactor: Multiplier for all Player related damage.<br />
*enemyDamageFactor: Multiplier for all AI related damage.<br />
*halfDefenseModifier: Sets the cover bonus in % for halfCovers.<br />
*fullDefenseModifier: Sets the cover bonus in % for full Covers.<br />
*agilityDefenseAmount: The bonus the agility skill is giving per point.<br />
*defendActionModifier: Deprecated. Does nothing anymore<br />
*steadyShotCooldown: In turns.<br />
*headShotCooldown: In turns.<br />
*selfHealCooldown: In turns.<br />
*shieldRemoveCooldown: In turns.<br />
*berserkCooldown: Cooldown In Turns<br />
*paralyseCooldown: In turns.<br />
*revealEnemiesCooldown: In turns.<br />
*teleportCooldown: in turns<br />
*paralyseSkillDuration: How long the paralyse skill is working in turns.<br />
*passiveSkillMedkitBonus: How much better the output is for a medkit in %. (0-1 range).<br />
*passiveSkillMediumRangeBonus: How much the assulrifle bonus is for Lannis. (in %).<br />
*passiveSkillShieldBonus: The bonus in % for Schaffer on the shield strenght. (translate from 0-1)<br />
*passiveSkillMartialBonus: The S13 close combat bonus in % (translate from 0-1)<br />
*passiveSkillCritChanceBonus: The Jenna passiv skill in % on crits damage chance. (translate from 0-1)<br />
*passiveSkillHealthRegenBonus: How many HP this skills regens per turn.<br />
*buyValueFactor: Multiplier for the costs in the store (buy values)<br />
*sellValueFactor: Mulitplier for the cost in the store (sell values)<br />
*aimingRange: The range from -x to +x the aiming skill can go from 0 to 10 when leveling up.<br />
**How this works: A character with the aiming skill of 0 would get a -25 mali in this case and a character with 10 would get a 25 bonus.<br />
**The steps per skill point are set below.<br />
*aimingPerPoint: The ammount of hitchance bonus you get per aiming skill point. (Please note it should always be the aimingeRange/10)<br />
*critBaseBonus: The basic critical hit chance all characters have (Note: weapons bring their share to this value too) in % (translates from 0-1)<br />
*critBonusPerAimingPoint: How much more hit chance bonus you get per skill point on aiming.<br />
*aimingModifierBaseBonus: The base value that you get as bonus if you use a second AP to aim on a target.<br />
*aimingModifierPerAimingPoint: 'The bonus you get per skill point on aiming on the second AP aiming bonus from above.<br />
*stimpackLimit: How many stim packs a character can use until the negativ effects are hitting.<br />
*aimingRepeatBonus: This bonus value in % that you get if you shoot at the same target again.<br />
*aimingRepeatModifierBonus: This is the bouns in % if you hit the same target again but also uses a second AP to hit it.</div>Seminushttp://robotality.com/wiki/index.php?title=Ai_archetypes.jsonAi archetypes.json2014-09-18T13:49:53Z<p>Seminus: </p>
<hr />
<div>==Overview==<br />
The AI of Halfway can be split up in 6 different types:<br />
#Standard<br />
#Berserker<br />
#Tank<br />
#Turret<br />
#Sniper<br />
#Scout<br />
<br />
Each has its base behavior you can build upon. In this json this base behavior can be tweaked and defined as "Brains". Currently each AI type has one brain, called "default" but you can add as many new ones as you'd like.<br />
<br />
Each brain has to have two sub-brains: One Strong (AI is health, this gets used) and a Weak (AI is wounded (below 25%) now this brain gets used) That allows to define different patterns if an enemy is wounded.<br />
<br />
=== Noise ===<br />
<br />
Also in this file , the noise are defined elemets in the game are creating. They are then used to activate the AI and make them follow noises.<br />
<br />
'''Note about noise an visibility:''' <br />
*If a AI can't see you, but hears a noise, it will go to that noise an will look what is going on.<br />
*If a AI it self does not hear anything and can't see you, but another AI agent is hearing/seeing something, the first AI will then follow the second one to help him and see what is going on.<br />
*Only player are producing noise. AI are muted because this lead to AI chasing AI problems as the game only knows one type of noise and can't say the difference between player produced noise and the one done by the AI. ;)<br />
*'''Important;'''Don't make the noise radius to big as it can lead to stutters and slow downs in the game.<br />
<br />
==Basic Overview how the AI works==<br />
<br />
The AI system is working with a heat map to make decisions. The AI can see you, he can hear you and they can talk to each other to give information on where you are.<br />
<br />
The heat map goes about 2 turns in the future to decide which places are the best do go and the lowest hit chances.<br />
<br />
The consider:<br />
*How many players can hit me:<br />
**This turn<br />
**Next turn<br />
*How high is the hit chance on this tile<br />
*How far can I target an player<br />
*They can use items:<br />
**Medkits<br />
**Grenades<br />
<br />
<br />
==Example Standard Brain ==<br />
<br />
"Standard" : {<br />
"Brains" : {<br />
"Default" : {<br />
"Weak" : {<br />
"AttackProbability" : 1,<br />
"DefendProbability" : 1,<br />
"EnemyHitChanceEvaluationAccuracy" : 0.95,<br />
"SeekCoverProbability" : 1,<br />
"MaximumFireDistance" : 12,<br />
"MinimalAttackHitChance" : 0.1,<br />
"MinimalTeamMateDistance" : 0,<br />
"MinimalEnemyDistance" : 3,<br />
"HitChanceEvaluationAccuracy" : 1,<br />
"GrenadeThrowProbability" : 0.1,<br />
"UseMediKitProbability" : 1<br />
},<br />
"Strong" : {<br />
"AttackProbability" : 1,<br />
"DefendProbability" : 0.5,<br />
"EnemyHitChanceEvaluationAccuracy" : 1,<br />
"SeekCoverProbability" : 1,<br />
"MaximumFireDistance" : 10,<br />
"MinimalAttackHitChance" : 0.3,<br />
"MinimalTeamMateDistance" : 0,<br />
"MinimalEnemyDistance" : 3,<br />
"HitChanceEvaluationAccuracy" : 1,<br />
"GrenadeThrowProbability" : 0.1,<br />
"UseMediKitProbability" : 0.05<br />
}<br />
}<br />
},<br />
"Behaviour" : {<br />
"SteppedTurnProbability" : 0<br />
}<br />
},<br />
<br />
==Values Description==<br />
<br />
This is the short overview of the values that you can change. Please note that AI Brains tweaking is alot of testing and trying out different settings. There is no fast way to make it work.<br />
<br />
*AttackProbability: This defines the probability (0-1) if the AI is going to attack a target if he has:<br />
**A bullet left in the gun<br />
**Can see a target and is in range<br />
**Has an attack left.<br />
*DefendProbability: Defines the chance if the enemy is going to make retaliate if he wont move or has no attack left.<br />
*EnemyHitChanceEvaluationAccuracy: How accurate can the AI see the hit chances the player has in the Heatmap. <br />
**This is like a noise that is applied to the correct values in the heat map. The lower the value here the more random and wrong decision the AI will going to make. (0-1, were as 0 means the values the AI gets are totally random to 1 the AI knows exactly the right values)<br />
*SeekCoverProbability: This defines how important it is for an AI to seek cover while moving.<br />
** Low values means the AI ignores the environment and just runs the shortest way to its target.<br />
** High values means that he will search for cover and if possible go behind on while moving.<br />
*MaximumFireDistance: Defines the maximum distance in tiles the AI will fire his weapon.<br />
*MinimalAttackHitChance: This is the minimum hit chance the AI needs to have or else he won't shoot but move in closer. (0-1, Which translates into: 0%-100%)<br />
*MinimalTeamMateDistance: The distance in tiles the AI will keep from other AIs if possible.<br />
*MinimalEnemyDistance: The minimum distance the AI tries to keep from the player character if possible.<br />
*HitChanceEvaluationAccuracy: How accuarate the values are the AI gets for his own hit chances. (Noise for the heat map similar to the EnemyHitChanceEvaluationAccuracy above).<br />
*GrenadeThrowProbability: If an AI carries a grenade in the backpack, how high is the chance that he will use it.<br />
*UseMediKitProbability: If the AI carries a Medkit in the backpack, how high is the chance that he is going to use it. It makes sense to have a very low value for the strong brain, because it could happen that he uses it even though he is 100% healthy.</div>Seminushttp://robotality.com/wiki/index.php?title=AssetMetaData.jsonAssetMetaData.json2014-09-18T13:36:39Z<p>Seminus: Created page with "==Overview== This json is autogenerated by the MetaData Tool and should not be edited manually."</p>
<hr />
<div>==Overview==<br />
This json is autogenerated by the [[MetaData Tool]] and should not be edited manually.</div>Seminushttp://robotality.com/wiki/index.php?title=AccuracyCurves.jsonAccuracyCurves.json2014-09-18T13:26:08Z<p>Seminus: /* Example */</p>
<hr />
<div>== Overview==<br />
<br />
In the accuracy json, you can define curves for weapons on how good they hit over distance. <br />
<br />
There are always two curves:<br />
#The main curve when you use only 1AP<br />
#The second curve if you use 2AP (In most cases this should be better)<br />
<br />
So how does they work:<br />
<br />
Each weapon has a base accuracy value that defines the base hit chance together with the skill from the character. This curve then callculates the real hit chance over the distance. (One unit is one tile)<br />
<br />
So the formula for calculating the hit chance goes like this:<br />
<br />
'''Note:''' Not 100% if every information is 100% correct here:<br />
<br />
hitChance = characterAiming+baseAccuracy(distInTiles)-defenseBonus+aimingModifier<br />
<br />
*hitChance: The final hit chance the player sees when selecting a target<br />
*characterAiming: The aiming skill (<5 -> negativ impact, =5 no impact, >5 bonus)<br />
*baseAccuracy(distInTiles): The base value from the weapon over the distance using this curves here<br />
*defenseBonus: The halfCover or FullCover bonus + the Character agility bonus.<br />
*aimingModifier: The additional AP for aiming.<br />
<br />
'''Tip:''' Use Excel or similar to visualize the curves as it helps immensely to get a feeling for them. <br />
<br />
==Example==<br />
{<br />
"curves" : [<br />
{<br />
"id" : "shortRange01Curve",<br />
"curvePairs" : [<br />
{<br />
"range" : 1,<br />
"value" : 1<br />
},<br />
{<br />
"range" : 2,<br />
"value" : 0.9<br />
},<br />
{<br />
"range" : 3,<br />
"value" : 0.6<br />
},<br />
{<br />
"range" : 4,<br />
"value" : 0.1<br />
},<br />
{<br />
"range" : 5,<br />
"value" : 0<br />
}<br />
]<br />
},<br />
{<br />
"id" : "shortRange01CurveModifier",<br />
"curvePairs" : [<br />
{<br />
"range" : 1,<br />
"value" : 1<br />
},<br />
{<br />
"range" : 2,<br />
"value" : 1<br />
},<br />
{<br />
"range" : 3,<br />
"value" : 0.95<br />
},<br />
{<br />
"range" : 4,<br />
"value" : 0.6<br />
},<br />
{<br />
"range" : 5,<br />
"value" : 0.3<br />
},<br />
{<br />
"range" : 6,<br />
"value" : 0.1<br />
},<br />
{<br />
"range" : 7,<br />
"value" : 0<br />
}<br />
]<br />
},<br />
]<br />
},<br />
<br />
==Description==<br />
<br />
*Each curves are actually two: the range (in tiles) and the multiplayer for the baseAccuracy you get when the target is on that tile (0-1)<br />
*Each of this double curves need a second one: "shortRange01Curve" and "shortRange01CurveModifier"<br />
**shortRange01Curve: Is the one used when only 1AP is used for aiming<br />
**shortRange01CurveModifier: Is the bonus you get when Aiming with 2AP.<br />
<br />
<br />
==Notes==<br />
<br />
*Make sure that the last value is 0 or else the weapon will hit targets in infinity.<br />
*No "values" over 1 or below 0<br />
*Be sure you use the same name for both curve pairs but add the "Modifier" to the second one.<br />
** Make sure the names are unique<br />
** They are later used in the weapons json to define the curves for each weapon.</div>Seminushttp://robotality.com/wiki/index.php?title=Gif_ProcessorGif Processor2014-09-18T06:18:43Z<p>Seminus: /* What is what setting */</p>
<hr />
<div>==Overview==<br />
This is a little standalone tool that allows you to make png animation stripes from gif animations. The good thing here is that you can have gifs with all animations you want to have in one file and then export them to pngs and anim timing files including proper naming in one go.<br />
<br />
Please note, that this should only be used for objects with alot of animations. If you have a single animation stripe, just export it directly to a png and make the anim file by hand. (see below)<br />
<br />
=== How to use it ===<br />
<br />
#Setup the settings.txt as described below.<br />
#Run the application. This will open the "Open dialogue" from your OS<br />
#Navigate to the folder where your gifs are. (Be sure that they are all in the same dimension or the tool will crash)<br />
#All the png and .anim files are now generated and should be in the folder with your gifs.<br />
#Copy them over in the folders were they belong.<br />
<br />
'''Note:''' You need to run the atlas builder before you can use the new assets.<br />
<br />
====settings.txt====<br />
<br />
The settings.txt needs to be placed in the main folder besides the executable of this tool.<br />
<br />
'''Tip:''' I always have multiple copies of this file at hand so I just can copy over the settings.<br />
<br />
=====How it looks=====<br />
<br />
// Image size to extract<br />
32,32<br />
// Appended output names<br />
#Down<br />
#DownRight<br />
#Right<br />
#UpRight<br />
#Up<br />
<br />
=====What is what setting =====<br />
Image size: This describes the dimension of 1 frame of the resulting png and not the dimension of the gif or the whole png stripe. (usually it is 32*32)<br />
<br />
Appended Output names: Use this to make the resulting animation stripes to have the correct name endings. Please note the program will crash if the amount of names in relativity to the dimension of the gif is not correct. (In the sample below we have 5 animations a 32*32 so we need the five names extensions)<br />
<br />
<br />
And here is a fitting gif file so you can see how it looks like:<br />
<br />
[[file:GinaNia-Run.gif]]<br />
<br />
Note: The file name should be ginaNia#Run.gif, but this wiki does not like '#' in names ;)<br />
<br />
=====The Result=====<br />
If you run the tool with this settings you will get 5 png and 5 .anim files named like this:<br />
<br />
ginaNia#Run#Down.png and .anim<br />
<br />
ginaNia#Run#DownRight.png and .anim<br />
<br />
etc.<br />
<br />
'''Note about the gif:''' Please switch of any size optimization for gifs when exporting them. This will lead into only partially drawn frames.<br />
<br />
=== Anim files ===<br />
<br />
The anim file defines the timing of each frame in an animation. (The values are milliseconds) If you do not provide an anim file with the animation the game just will use a default and it may look different then you want it to be.<br />
<br />
'''Note:''' The anim files always gets generated with this tool. But sometimes you want to edit by hand or make it manually.<br />
<br />
'''Note 2:''' The name of the anim file needs to be the exact same as the one of the png file. (including upper/lower cases) <br />
<br />
====How the anim file looks ====<br />
<br />
# Loop animation, frame times ...<br />
true,100,100,100,100,100,100<br />
<br />
# First value: Loop: true/false set it to false if the animation only should be played once per event. <br />
# Timings: Per frame timings in milliseconds. (Important: The ammount of timings need to be the same as the frame count) <br />
<br />
=== Know Issues ===<br />
<br />
*If the gif animation only has on frame, then the anim file timing will be set to 0. That will make the game crash. So please edit the anim file manually in this case. (A good default timing is around 40-100 ms.)</div>Seminushttp://robotality.com/wiki/index.php?title=Assets_Rules_and_NamingAssets Rules and Naming2014-09-17T14:05:59Z<p>Seminus: /* Types of Assets */</p>
<hr />
<div>==Overview==<br />
<br />
For all the GFX files use the png as file format.<br />
'''Please note:'''<br />
*To add new assets just copy then into the folder they belong. (See below links for details)<br />
*After copying the assets you need to restart the editor. It will take a while for the editor to build the atlas of the new art assets.<br />
*After that they should be ready to use.<br />
<br />
===Folder Structure and Mod setup ===<br />
<br />
For detailed information on where to put what head over to this side:<br />
<br />
[[Setting up a new mod]]<br />
<br />
<br />
===Types of Assets===<br />
<br />
[[File names for objects|Objects]]<br />
<br />
[[Tilesets]]<br />
<br />
[[Characters]]<br />
<br />
[[CharacterPortraits]]<br />
<br />
[[Enemies]]<br />
<br />
[[Special FX]]<br />
<br />
[[Masks and Atlas building]]<br />
<br />
=== Sound Fx and Music ===<br />
<br />
[[Music and Sound FX]]</div>Seminushttp://robotality.com/wiki/index.php?title=How_to_change_and_add_Items_and_other_thingsHow to change and add Items and other things2014-09-17T14:04:14Z<p>Seminus: /* = Asset Meta Data */</p>
<hr />
<div>== Overview ==<br />
<br />
If you want to change or add items or weapons or anything like that you will have to work with our json files. But fear not it is rather simple and easy to learn.<br />
<br />
'''Tip:'' Use [http://www.sublimetext.com/ Sublime Text] as the text editor. There is a free version to test out and it is very powerful when it comes to replace elements over multiple files and more and it works on all major OS.<br />
<br />
<br />
=== List of Json files===<br />
<br />
====Accuracy Curves for Weapons====<br />
<br />
If you want to add or edit new range accuracy curves for weapons use this json here:<br />
<br />
[[accuracyCurves.json]]<br />
<br />
====AI settings====<br />
<br />
All AI settings and brains parameters are defined here:<br />
<br />
[[ai_archetypes.json]]<br />
<br />
=== Asset Meta Data ===<br />
<br />
This Json gets automatlic updated when you use the [[MetaData Tool]]. So don't edit it manually.<br />
<br />
[[assetMetaData.json]]<br />
<br />
====Balancing ====<br />
<br />
This json contains some of the main balancing elements you can tweak in Halfway. Also very well suited to test out some fast changes to the balancing:<br />
<br />
[[balancing.json]]<br />
<br />
====Items====<br />
<br />
Want more Items? Here is the place to look:<br />
<br />
[[items.json]]<br />
<br />
====Level Points on the Map====<br />
<br />
In this file are the level points definitions and position on the Mission briefing map. Also the information about the "Must have Team" and more:<br />
<br />
[[levelPoints.json]]<br />
<br />
====Game Progress====<br />
<br />
This json defines the progress of the game and when which maps are available.<br />
<br />
[[progressPacks.json]]<br />
<br />
====Skill Descriptions ====<br />
<br />
Just contains the text for the skills.<br />
<br />
[[skillDescriptions.json]]<br />
<br />
====Suits definitions====<br />
<br />
In the suits.json all the information about the suits are stored. <br />
<br />
[[suits.json]]<br />
<br />
====Weapons Definitions====<br />
<br />
All the weapons are stored here:<br />
<br />
[[weapons.json]]<br />
<br />
====Character Animationssets====<br />
<br />
This jsons are special cases for the characters and enemies for defining the animation rules:<br />
<br />
[[Animation Sets]]<br />
<br />
==== Character description files .unit====<br />
<br />
In this files the different characters get defined and what start Items and suits they are wearing:<br />
<br />
[[Character Unit Files]]<br />
<br />
==== Enemy Unit files====<br />
<br />
[[Enemy Unit Files]]</div>Seminushttp://robotality.com/wiki/index.php?title=MetaData_ToolMetaData Tool2014-09-17T13:10:09Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
[[file:MetaDataTool.png]]<br />
<br />
The MetaData Tool is a very special tool to define meta data points in assets.<br />
The information you place in this tool get saved in the assetMetaData.json and are applied to the objects and characters directly in the game.<br />
<br />
If you want to add a new point to an object, click on the + Icon and select which typ you want. Now place it with the finger tool or with the x and y coordinates.<br />
<br />
To remove a point click on the X besides it.<br />
<br />
You can edit a point anytime by using the finger tool again or changing the numbers.<br />
<br />
Note: The tools saves all changes automatically.<br />
<br />
===Types of Meta Data Points===<br />
<br />
====interactionPoint====<br />
Defines were the "!" is shown over an object or where the dialog box is displayed. This is the most used data point.<br />
====BulletOffset====<br />
Defines the muzzle position and where the bullet shells exit the weapons.<br />
====koPoint====<br />
Defines where the stars are rendered if a character goes KO. (Only used for characters)<br />
<br />
===Important notes===<br />
<br />
*If an object/Character has multiple frames because of animation, place the points always on the first frame.<br />
*Points can be placed outside of the frame.<br />
*You do not have to save, the tool saves your change after every change you made.<br />
*If you place points in enemies/characters only place them in the animation they are needed. But make it for all 5 views. (the other 3 are mirrored)<br />
<br />
<br />
== Known Issues ==<br />
<br />
* The tool window can't be scaled.</div>Seminushttp://robotality.com/wiki/index.php?title=Fog_of_War_Edit_ModeFog of War Edit Mode2014-09-17T13:05:15Z<p>Seminus: Created page with "==How it works== Without the "Fog of War" (Short FoW) the whole level is visible. This is okay if you have a homebase where everything is already discovered. So the idea of..."</p>
<hr />
<div>==How it works==<br />
<br />
Without the "Fog of War" (Short FoW) the whole level is visible. This is okay if you have a homebase where everything is already discovered. <br />
So the idea of the FoW is to split up the level into smaller sectors that then can be discovered step by step.<br />
<br />
'''Some important notes:'''<br />
*The FoW sectors need to overlap at doors (including the door collision to work) The doors are the triggers to remove a FoW area.<br />
*If you use FoW make sure all the walkable areas have a FoW sector and all the sectors are somehow connected. (via the doors) If not then you will have areas that are 100% black. <br />
<br />
<br />
==Short cuts==<br />
* F: Go into FoW edit mode<br />
* L-Click (and drag): Paint the FoW sector.<br />
* L-Click on a active FoW tile and it gets removed.<br />
* Enter: Finish the FoW sector (Note: it can't be edited again afterwards)<br />
* D +L-Click: Delete the FoW sector<br />
<br />
==Known Issues==<br />
<br />
* FoW areas only get removed while playing the game if the player opens a door to a new sector. Walking into a new sector does nothing.<br />
* There is currently no Icon for this edit mode.<br />
* If you want to have no FoW, be sure you have removed all the FoW sectors completely or the level will go black.</div>Seminushttp://robotality.com/wiki/index.php?title=Collision_Edit_ModeCollision Edit Mode2014-09-17T12:50:27Z<p>Seminus: Created page with "==How it works== Collision in Halfway is tile based. So there are two basic situations: You can walk on an tile or you can't. To set up the collisions you have to do the fol..."</p>
<hr />
<div>==How it works==<br />
Collision in Halfway is tile based. So there are two basic situations: You can walk on an tile or you can't. <br />
<br />
To set up the collisions you have to do the following:<br />
<br />
#Activate the collision edit mode.<br />
##Your whole screen should have a red overlay now. This means all the collisions are on "none walkable"<br />
<br />
==Short cuts:==<br />
*1-5 Collision type<br />
*Shift+F2: Fills all none walkable collisions with a full cover collision<br />
<br />
==Types of collision==<br />
<br />
Use the number keys to get the following collision brushs:<br />
<br />
#Walkable/none Walkable depending on the collision mode the tile is it will switch to the other one (Green/Red)<br />
#None walkable but you can shoot over it. (Yellow)<br />
#Door Collision (Purple) Use this for doors only.<br />
#Half Vover (Gives a tile a half cover value) Note: This is independent of the collision itself.<br />
#Full Cover (Gives a tile a full cover value) Note: This is independent of the collision itself.<br />
<br />
==Some informations==<br />
<br />
You can continuously paint with the collision brush. It will keep the brush mode in which you clicked first until you release the mouse key again.<br />
<br />
If you are making an abyss or you have some covers use the second collision type (2) to make them none walkable, but you can still shot over the tile.<br />
<br />
The cover collision is independent of the normal collision. Just mark all tiles you want to have them some cover values. For visual consistency use the full cover an all walls around the level to have it correctly shown during gameplay.</div>Seminushttp://robotality.com/wiki/index.php?title=Light_Edit_ModeLight Edit Mode2014-09-17T11:31:11Z<p>Seminus: </p>
<hr />
<div>=== How the light system works ===<br />
The light system work basicly the same as the object layer. So all shortcuts etc are working here too. <br />
Only difference is, that you always only have one layer of light and you have to use the light brushes in the Light tab of the editor.<br />
<br />
'''Notes:'''<br />
* Lights do not have colors you have to do that separately on an object layer.<br />
* The glows you see in Halfway are placed on a separate additive rendered object layer.<br />
* To set the ambient color Double L-Click on the Light layer. (See below for details.)<br />
<br />
=== Controls ===<br />
<br />
* L-Click: Place selected light<br />
* R-Click on highlighted light: Copy the object including its settings.<br />
* D+L-Click: Delete the selected light.<br />
* S + L-Click+ Drag: Scale light. (<br />
* To unselect you current lights brush: R-Click anywhere.<br />
* Select trough overlaying lights: Unselect you current light and use the mouse wheel to cycle through all overlaying lights. (The red one is the currently selected one)<br />
* Double L-Click on light will open the light Properties menu.<br />
<br />
=== Light layer settings ===<br />
<br />
If you double L-Click the Light layer you get the following settings:<br />
<br />
[[file:LightLayerSetting.png]]<br />
<br />
Here you can set the RBGA values for the ambient light of the scene. <br />
<br />
'''Note:''' <br />
* Best results are achieved by using very dark colors.<br />
* Often it is a good idea to work with complementary colors for lights and ambient.<br />
<br />
=== Light Flicker Option ===<br />
<br />
If you double L-Click a light you get the light settings like this:<br />
<br />
[[file:LightSettings.png]]<br />
<br />
'''Please note that only the settings from the "Use Flicker" are used the other ones are useless for lights.'''<br />
<br />
*Use Flicker: If set to yes, the light will flicker as you have set it in the settings below.<br />
** How light filcker works: you have a time where the light is steady and one where it is flickering. When it is flickering you can set the speed in which it flickers. The engine always chooses a random value in between the min and max value for these settings.<br />
** All values are in seconds if referring to time.<br />
*Normal Phase Min: The minimum time the light is steady.<br />
*Normal Phase Max: The maximum time the light is steady.<br />
*Flicker Phase Min: The minimum time the light will flicker<br />
*Flicker Phase Max: The maximum time the light will flicker<br />
*Flicker Speed: How fast the light will flicker. (The higher the value the slower it will flicker)<br />
*Flicker Range: Defines how strong the light can flicker. <br />
** If you use low values here the light only will flicker very softly<br />
**If you take values >=1 the light will ficker very strong.<br />
<br />
<br />
===Tips and Tricks===<br />
<br />
*To make lights look good you should do the folLowing:<br />
**Add an object that acts as light source. It makes the whole thing more believable.<br />
**Add a layer on top of all the other layers, just below the light layer and set it to additiv rendering. Use it to place the glows on over the light sources to make them pop.<br />
**Don't use to many flicker light source. It can really be annoying to watch.<br />
**A combination of Additive rendered glow object layer and a multiplyed or normal rendered color object layer can make very interesting light situations.<br />
<br />
===Know issues===<br />
<br />
*Never Place an object in the light layer, it will crash your level when playing it.</div>Seminushttp://robotality.com/wiki/index.php?title=Enemy_Edit_ModeEnemy Edit Mode2014-09-17T09:10:15Z<p>Seminus: </p>
<hr />
<div>=== Base Controls ===<br />
<br />
To place enemies you need to be in the "Place Enemy mode". You can only place enemies in tiles that have a walkable collision. <br />
<br />
=== Important note:===<br />
<br />
<span style="color:#FF0000">'''Be sure that every enemy you have placed has an AI Brain (See below on how to apply) before you save the map. Having AI without brain makes the editor crash on level load up.'''</span><br />
<br />
Workaround: You can open your level json file with any text editor and remove this part and save:<br />
<br />
<br />
"enemyLayers": [<br />
{<br />
"class": "ObjectLayer",<br />
"name": "Default Enemy Layer",<br />
"visible": true,<br />
"opacity": 1,<br />
"blendMode": "Normal",<br />
"parallaxX": 1,<br />
"parallaxY": 1,<br />
"parallaxOffsetX": 0,<br />
"parallaxOffsetY": 0,<br />
"objects": [<span style="color:#FF0000">'''Delete everything inbetween these brackets'''</span><br />
]<br />
}<br />
]<br />
}<br />
<br />
====How you place an enemy:====<br />
<br />
#Go into the Enemy mode and select the Enemies tab on the left side.<br />
#Select one of the enemy, lets say infested01Mechanic<br />
#Make sure you are on the Enemy layer.<br />
#Now place it on a free spot in the map where the collision is on walkable.<br />
#R-Click to unselect your current enemy brush<br />
#Now double L-Click the enemy you place before, that should open the settings menu of this enemy.<br />
#Set the direction it should look and click on the folder icon to load a template.<br />
#Select the Infested01Mechanic template in this case.<br />
#You are done. The other settings are explained further down on this page.<br />
<br />
====Mouse and keyboard:====<br />
<br />
* L-Click: Place an enemy<br />
* D + L-Click: Delete an enemy.<br />
* Double L-Click: Open Settings for the enemies.<br />
* R-Click on enemy to copy an enemy. (L-Click to place the copy again)<br />
* R-Click to unselect you current enemy selection<br />
<br />
====Enemy Options ====<br />
<br />
[[file:EnemyOption.png]]<br />
<br />
#Direction: You can set the direction the enemy will look when spawned.<br />
#Enemy Typ: Load a preset json file for the enemy. <br />
##Note: it should match at least the visual enemy type you selected because else some animation may not showing<br />
#AI Type: You can overwrite the default setting of your preset here.<br />
#AI Brain: Select which AI Brain the AI Type should use. (Need to be defined in the ai_archetypes.json to show up here)<br />
<br />
=== AI Types ===<br />
<br />
There are 6 AI types that behave different by code and are the base for all further AI tweaks you may want to make:<br />
<br />
====Standard:====<br />
*This is the normal running around and shooting enemy type. It is careful and seeks cover but tries to be very offensive.<br />
*The Infested02 models are used mainly for this type of enemy.<br />
====Berserker:====<br />
*This is the close combat enemy . It doesn't give a shit about cover and just tries to run at you an hit you with it's close combat attack.<br />
*The infested01 models are the main use for this AI.<br />
====Tank====<br />
*The Tank is similar to the Standart but it doesn't care for cover that much. It basic behavior is like this: Move into shooting range, start shooting and don't care if get hit. It stays there until you move out of range or it gets killed.<br />
*The infested03 models are the main enemy types used with this AI type.<br />
====Turret====<br />
*The turret is a static enemy type that is hidden and can't be attacked until it sees an player. It tries to shoot you even thought it has only very low hit chances.<br />
*The moving turret is a subset of this AI type and needs a [[Moving Turret Target Trigger]] to work. Other then the initial moving to its location it is quite similar.<br />
*Use the turret and moving turret assets for this AI Type as it needs special animations.<br />
====Sniper====<br />
*Sniper is the same base type like the standard but it is more careful and tries to stay out of reach and in cover.<br />
*Use the Infested02 models for this one, but don't forget to give them some sniper weapons. ;)<br />
====Scout:====<br />
*The scout is a the Alien Drone. It is fast and moves alot. It can attack twice.<br />
*Use the drone assets for this one.<br />
<br />
==Known Issue==<br />
<br />
'''Always add an AI type before saving your document. If an enemy is saved without a AI template loaded into the settings, the editor will crash when loading the map. You then need to manually edit the json file and remove the faulty enemy by hand.'''</div>Seminushttp://robotality.com/wiki/index.php?title=Must_Have_TeamMust Have Team2014-09-16T15:24:50Z<p>Seminus: Created page with "== How it works == In some special cases, you want to be sure that a special set of character is loaded. In this case use this trigger. To define which ones, use the levelpo..."</p>
<hr />
<div>== How it works ==<br />
<br />
In some special cases, you want to be sure that a special set of character is loaded. In this case use this trigger.<br />
<br />
To define which ones, use the levelpoint.json and define the "requiredCharacters", these are the ones that get loaded.<br />
<br />
== Settings ==<br />
<br />
None (use the levelPoints.json for definitions)<br />
<br />
==Known Issue ==<br />
<br />
None</div>Seminushttp://robotality.com/wiki/index.php?title=Mission_Briefing_TargetMission Briefing Target2014-09-16T15:22:32Z<p>Seminus: Created page with "== How it works == This Trigger works similar to the Player Starting Point. But in this case it is used to define the position of the character when the mission briefing..."</p>
<hr />
<div>== How it works ==<br />
<br />
This Trigger works similar to the [[Player Starting Point]]. But in this case it is used to define the position of the character when the mission briefing starts and all the team member are moving to the map table in the homebase.<br />
<br />
== Settings ==<br />
<br />
# Unit Number: Select which team member is going here.<br />
# Direction: What direction it is looking when arriving.<br />
# Stance: What animation is played when the character arrives.<br />
<br />
==Known Issue ==<br />
<br />
* Please note that all character in the team need one of these points in the homebase or the game will get stuck.<br />
* Additionally you need to make sure that all the character can reach the point in the homebase.<br />
** To do that you may have to make a sequence that opens the doors of the homebase so the character can walk trough, as they can not open doors. ;)</div>Seminushttp://robotality.com/wiki/index.php?title=TutorialTutorial2014-09-16T15:17:31Z<p>Seminus: Created page with "== How it works == This sets the level as Tutorial level. Note: This trigger is not tested, because we do not use tutorial levels in the game. == Settings == None ==Know..."</p>
<hr />
<div>== How it works ==<br />
<br />
This sets the level as Tutorial level. <br />
<br />
Note: This trigger is not tested, because we do not use tutorial levels in the game.<br />
<br />
== Settings ==<br />
<br />
None<br />
<br />
==Known Issue ==<br />
<br />
Untested feature.</div>Seminushttp://robotality.com/wiki/index.php?title=Player_Starting_PointPlayer Starting Point2014-09-16T15:16:25Z<p>Seminus: Created page with "== How it works == This trigger is used as the spawn point for your squad. The team spawns were these triggers are placed. == Settings == #Unit Number: 1-8: Select which t..."</p>
<hr />
<div>== How it works ==<br />
<br />
This trigger is used as the spawn point for your squad. <br />
The team spawns were these triggers are placed.<br />
<br />
== Settings ==<br />
<br />
#Unit Number: 1-8: Select which team member gets spawned here.<br />
#Direction: Defines the direction the character is looking when spawned.<br />
#Stance: Defines what animation is played when spawned. <br />
<br />
==Known Issue ==<br />
<br />
* Don't place it outside the collision<br />
* Be sure you have a spawn point for each member of the team.</div>Seminushttp://robotality.com/wiki/index.php?title=HomebaseHomebase2014-09-16T15:13:41Z<p>Seminus: Created page with "== How it works == Place this trigger, if the map is a home base. That will remove all other team members and you only control Lannis/Your main character. Also it activates a..."</p>
<hr />
<div>== How it works ==<br />
<br />
Place this trigger, if the map is a home base. That will remove all other team members and you only control Lannis/Your main character.<br />
Also it activates all the Homebase related features in the map.<br />
<br />
== Settings ==<br />
<br />
None<br />
<br />
==Known Issue ==<br />
<br />
None</div>Seminushttp://robotality.com/wiki/index.php?title=Environment_TriggerEnvironment Trigger2014-09-16T15:12:18Z<p>Seminus: /* How it works */</p>
<hr />
<div>== How it works ==<br />
<br />
With this trigger you can define the environment sound fx the level plays and uses.<br />
<br />
This includes door and room sounds that you can find in the sfx folder. Feel free to replace them if you want another mood.<br />
<br />
Note: Default when no trigger is placed: Engine Room<br />
<br />
== Settings ==<br />
<br />
Environment: Select the preset you want to use.<br />
<br />
==Known Issue ==<br />
<br />
None</div>Seminushttp://robotality.com/wiki/index.php?title=Deactivate_Skills_TriggerDeactivate Skills Trigger2014-09-16T15:10:12Z<p>Seminus: Created page with "== How it works == This trigger deactivates all the active skills skills of the player team. == Settings == None ==Known Issue == None"</p>
<hr />
<div>== How it works ==<br />
<br />
This trigger deactivates all the active skills skills of the player team.<br />
<br />
== Settings ==<br />
<br />
None<br />
<br />
==Known Issue ==<br />
<br />
None</div>Seminushttp://robotality.com/wiki/index.php?title=Default_Squad_TriggerDefault Squad Trigger2014-09-16T15:00:11Z<p>Seminus: Created page with "== How it works == This is a game developer only trigger. It defines the squad that gets loaded when you play the level in the editor or in the game without proper save game...."</p>
<hr />
<div>== How it works ==<br />
<br />
This is a game developer only trigger. It defines the squad that gets loaded when you play the level in the editor or in the game without proper save game. <br />
<br />
This default squads can be saved by using the games cheat code: save squad nameTheFile.json <br />
You then can edit this json later on to have the approximate team you want to have at this level if the player play regularly. <br />
<br />
Tip: We normally save this default squads during play tests and update them each time we have a balancing change done to the game. <br />
<br />
Note: if you do not have a default squad placed in the level, the editor will only spawn Lanis alone with no team. Feel free to use one of the defaults we use for the game to get started. <br />
<br />
== Settings ==<br />
<br />
#Default squad: Select the json file you want to load as default squad.<br />
<br />
==Known Issue ==<br />
<br />
*The editor crashes if you have placed this trigger but did not select a proper default squad file.</div>Seminushttp://robotality.com/wiki/index.php?title=Background_MusicBackground Music2014-09-16T14:54:34Z<p>Seminus: Created page with "== How it works == This defines what the music in the level is. You always have to select two files: one for the ambient music and one for the battles. == Settings == #Atmo..."</p>
<hr />
<div>== How it works ==<br />
<br />
This defines what the music in the level is. You always have to select two files: one for the ambient music and one for the battles.<br />
<br />
== Settings ==<br />
<br />
#Atmosphere Track: The one that gets played when no enemy is in sight.<br />
#Battle track: This track gets faded in as soon as a battle starts.<br />
<br />
==Known Issue ==<br />
<br />
* If this trigger is placed and no tracks are selected it will crash the game.</div>Seminushttp://robotality.com/wiki/index.php?title=Change_Layer_Visibility_ActionChange Layer Visibility Action2014-09-16T14:11:09Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
This action can hide and show object and tile layers.<br />
<br />
== Settings ==<br />
<br />
#Visibility:True/False<br />
#Layer: Select the layer you want to show or hide.<br />
<br />
==Known Issue ==<br />
<br />
*Does not yet work with enemy or light layer.</div>Seminushttp://robotality.com/wiki/index.php?title=Screen_Fade_ActionScreen Fade Action2014-09-16T14:11:00Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
This action fades the screen into a color you set via the settings, including transparency settings.<br />
<br />
== Settings ==<br />
<br />
#Duration: How long it takes to go from the previous screen state to this new one (in seconds)<br />
#Red/Green/Blue: Your color in RGB settings<br />
#Alpha: Your end transparency setting 0-255<br />
<br />
==Known Issue ==<br />
<br />
* Please note that if you have multiple screen fades in one level, it always interpolates from the last one. <br />
**You can solve this issue by reseting the screen fade with another screen fade action where you set the duration to 0 and RBG to 0,0,0 and transparency to 0 (Or any other color you want as starting point for the next screen fade)</div>Seminushttp://robotality.com/wiki/index.php?title=Real_Time_Mode_ActionReal Time Mode Action2014-09-16T14:10:51Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
This action forces the game to go into real time mode. <br />
<br />
'''Note:''' This action is not needed anymore, as the game always goes into RT mode after all enemies are killed. It is still in the editor out of legacy reasons.<br />
<br />
== Settings ==<br />
<br />
None<br />
<br />
==Known Issue ==<br />
<br />
*Don't use it anymore. No need for it.</div>Seminushttp://robotality.com/wiki/index.php?title=Prevent_Enemy_Spotted_ActionPrevent Enemy Spotted Action2014-09-16T14:10:42Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
If this action is used, the usual: "Hey there is a new Enemy over there"-Camera move gets suppressed. This is useful if you already have a camera move done in a sequence and you don't want the game to make another one. (For example when you enter a room full of enemies)<br />
== Settings ==<br />
<br />
None<br />
<br />
==Known Issue ==<br />
<br />
None</div>Seminushttp://robotality.com/wiki/index.php?title=Play_SFXPlay SFX2014-09-16T14:10:32Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
Plays a sound file. (*.wav files only)<br />
<br />
== Settings ==<br />
<br />
#SFX Files: Select the file you want to have played.<br />
<br />
==Known Issue ==<br />
<br />
* You don't need a Sequence begin/end trigger if you only play a sound file in a sequence.</div>Seminushttp://robotality.com/wiki/index.php?title=Move_Character_ActionMove Character Action2014-09-16T14:10:21Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
This action will let a character move to the position of this trigger and let him look in the set direction.<br />
<br />
== Settings ==<br />
<br />
#Unit Number: Sets which character you are going to move. (The character numbers are set in the levelpoints.json under the default squad setting. Also if there is no squad set it uses the character in the order they are spawened.)<br />
# Direction: The direction they will look at when reaching this point.<br />
<br />
==Known Issue ==<br />
<br />
*Don't use this in turn based mode.</div>Seminushttp://robotality.com/wiki/index.php?title=Timer_ActionTimer Action2014-09-16T14:10:12Z<p>Seminus: </p>
<hr />
<div>== How it works ==<br />
<br />
This action just counts down the time you set and then gives a impulse to the next trigger that it is done. <br />
Works great for timing and delaying multiple actions.<br />
<br />
The value are seconds.<br />
<br />
Note: It is often a good idea to delay actions by a time of 0.5s. We used this value a lot when doing stuff. (Opening doors -> 0.5s delay -> Sequence starts). We found that it gives the game a much nicer feel if you do it this way instead of just starting the sequence as soon as the player clicks on an object.<br />
<br />
== Settings ==<br />
<br />
#Duration: The time the timer counts down in seconds.<br />
<br />
==Known Issue ==<br />
<br />
None</div>Seminus