ATOM RPG

ATOM RPG

44 ratings
Modkit - User manual
By AtomTeam and 1 collaborators
First introduction to the user modification creation system for ATOM RPG
   
Award
Favorite
Favorited
Unfavorite
Introduction
This instruction will be constantly updated.

ModKit is a tool used for loading mod information into the game. The level of possible modifications solely depend on the user's skill.

There are basically three levels to using the tool kit.

- Beginner. On this level the modmaker changes and adds new game objects based on the in-game models, using only the in-game functions.

- Intermediate. On this level the mod creator adds new functions into the game. For this level, some 3D model and FX skills are needed.

- Pro. This level allows to completely change the game and requires in-depth knowledge of C# and Unity.
Installation and introduction to Unity + Modkit
1. To create mods for Atom RPG you will obviously need Unity 2019.4.28
https://unity3d.com/get-unity/download/archive

and the project called ModKit, https://github.com/atomrpg/modkit/tree/test_mod

After installing and launching Unity and open project ModKit.


2. Editor Unity
Unity Editor has a standard window interface. Here are the most important functions needed for making mods:


1. Hierarchy - Shows all elements of a scene.
2. Scene - The 3D representation of the scene.
3. Inspector - Lists all properties of the selected item of the scene.
4. Project - A tree of the project.
5. Project files in the current folder.
6. List of Modkit functions.


3. Asset Viewer

The Asset Viewer window opens after clicking the line depicted above.

Attention! At the first launch you will need to specify the directory with the location of the game resources (you need to click on the button with "...", see the figure below).
For the game installed via Steam location SteamLibrary\steamapps\common\ATOM RPG\AtomRPG_x64_Data\StreamingAssets.
Before you specify the directory:
After specifying the directory:


The most important aspects of this window are:

1. To edit an asset, you must first download it into the project by clicking the right mouse button on Download.
2. Search for asset by name.
3. Search for asset by type.

Reload - button is used for reloading an asset package.

Also, AssetViewer can be used for looking at asset properties with the Inspector window. You can do that by left clicking an object.



4. Editing pathing maps (Path Editor)



1. Clear pathing map. This must be performed when you begin creating a map or when you change map size.
2. Generate raycast calculation.
3. Create pathing map using the raycast calculation.

5. Builting the modification (Build Mod)

0. To compile a build, select "Game" -> "Build Mod" in the main menu.
1. **IMPORTANT:** Change the name to make your mod unique. Ensure it matches exactly with the one in Scripts/MyMod in the field labeled "Name."
2. Press **BUILD**.
3. Verify mod visibility, title, description and proceed to "Upload content" your mod to **Steam**.

After the modification is built, the Mods folder will open. Please, make sure that the names of the DLL files and the created folder are the same.



To publish your mod connect to your account and authorize on Steam (for testing doesn't required publishing).


6. Start the game to make sure that the mod functions correctly. Check %AppData%/../LocalLow/AtomTeam/Atom/output_log.txt
If the string "Mod Init" has your mod name in it, the mod loaded correctly.


To activate your mod, go to the Mods section in the game.
Prototypes
The game is using prototypes that have game information in them. Let's check out every one of the prototypes.
NB: To change the existing prototype go to Asset Viewer, pick the category and file, right click and > Download.


ItemProto(Items):
Icon
Localization - Special localization ID.
Cost - Base price in rubles.
Weight - measured in grams. 250 = 250 grams.
Collectable - Is the item stackable.
Modifiers - Changes made when the item is in the active slot.


AmmoProto(Ammo):
Armor Mod - This parameter currently does nothing.
Resistance Mod - chance to puncture armor from -100 to 100, the lower the number the more the ammo penetrates.
Damage Mod - Damage modifier.
Bullet - How many particles to calculate in a shot. For example, shotguns feature a lot of those in each shot, each with its own chance to hit and damage.
Dispersion - Fragment dispersion parameter.


WeaponProto(Weapons):
Weapon Type
Ammo
Ammo Capacity
Both Hands - Does the weapon use both hands?
Damage Min - Minimal base damage.
Damage Max - Maximum base damage.
Damage Radius - Used for grenades.
Fatality - Chance to summon a special death animation.
Perks - Special weapon parameters.
Damage Type
Single, Aimed, Burst, Reload - Modes
AP - Action Point cost.
Range
Shots - How many shots per attack.
Dispersion - The dispersion area and angle.
Mode Type - Used to bind weapon to a certain animation.
Sounds
Effects - Special weapon effects.
Requirements
No Ammo Sounds
Pre Attack Sounds


UniformProto(Clothes)
Uniform Type - Type of clothes
Hide Mask - Does the clothes item hide the beard or hairstyle.
Armor Durability - 0-100 anti-crit stat for armor, damage absorption stat for shield.
Rules - Rules that apply to wear clothes.
RulesEx - Other rules.
Perks - Perks that clothes give to character.


MemoProto(Notes and books)
Note - The note's or book's script.


ExplosiveProto(Explosives)
Damage Min - Minimal base damage.
Damage Max - Maximal base damage.
Damage Radius
Boom Sounds - Sound the explosion makes.


ChestProto(Container)
Boom - Blast visualization.
Damage Threshold
Hit Points
Remove On Destroy - Will the container disappear after destruction?
Locker Key - Whether it responds to a certain key.
Sound Open - Opening and closing sounds.
Sound Locked - Locked container opening attempt sounds.


DoorProto(Door)
Boom - Blast visualisation.
Damage Threshold
Hit Points
Remove On Destroy - Will the container disappear after destruction?
Locker Key - Whether it responds to a certain key.
Sound Open - Opening and closing sounds.
Sound Locked - Locked container opening sounds.
Sound Close - Sound the closed door makes.


ConsumableProto(Consumable)
Effects
Can Use In Battle
Use Sound
Use AP - Action Point cost for usage.
Use Distance - At which distance may the item be used?


CreatureProto(Creatures)
Sounds - Idle sounds.
Anim Sound - Animation induced sounds.
Sound Settings
Move Speed Walk
Move Speed Run
Shape Chance - Obstruction form when calculating chance to hit.
Creature Type
Gender Type
Blood Blob - What blood stain does the creature leave?
Blood Slash - Blood decals that fly around when creature is hit.
Bloob Scale - Size of blood stain.
Ragdoll - Script that controls the behavior of creature's body physics.
Unarmed1/Unared2 - "Weapons" the creature has, like it's claws for example.
Animator Controller - Special animation used when creature performs certain actions.
Abilities - Special creature abilities.


CharacterProto(Character)
AI Behavoir - Basic behavior pattern during battle.
Dialog - Dialogue script.
On Pocket - Pockets script that runs when you inspect the corpse's inventory.
Talk Add Dist - Distance at which dialogue starts by clicking the character.
Back To Position - Special ability to return to a certain spot. Useful for guards who protect certain spots.
Store Stats - Save character stats into the save file.
Summon - Ability to call friends during battle.
Summon Add Dist - Distance at which allies will hear the summoning.
Summon Visibility - Checks whether the allies see the character.
Battle Add Dist - Radius of character sight during battle.
Shiftable - Can the character be moved with the help of the context menu?
Spec Tree View - Character perk tree.
Accepting Restriction - What items does the character accept when given?
Specialty Mask - Other special limitations to character.
Stats


InteractiveProto(Interactive object)
Boom - Blast animation.
Damage Threshold
Hit Points - жизни
Remove On Destroy - Will the object disappear after destruction?
Interact - Interaction script.
Show Use Anim - Interaction animation for player and object.
Can Use In Battle - Will the item be usable in battle?
Interact Type - Types of usage.


EffectProto(Effect)
Icon
Chance - Chance to get effect.
Gender Restriction - Limitations for usage.
Addiction %
Modifiers
Applyers - How the effect is used.


EncounterProto(Random Encounters)
Chance %
Period - Time phase.
Trigger - What prompts the encounter if anything.
Trigger Invert - An inverted trigger.
Trigger Reset
Can Skip - Can the encounter be skipped?
Can Attack - Chance to attack before the enemy.
Once - Is the encounter unique?
Icon
Desc - Description with Location ID
Enter - Entry options (Location ID)
Show Intro - Will there be a cinematic after entry?
Levels - Generation levels for encounter.
Chances - Special options.
Requirements - What is required to get encounter?
Requirements - Additional requirements.


MiniMapProto(Mini map)
Id - Unique identificator.
Place Type - Location type.
X, Y - Global map coordinates.
W, H - Location size on global map.
Localization - Name of location (ID)


AvaProto(Avatar)
Hair Color
Hair
Beard
Gender


CraftProto(Tinkering)
Result - Successful result.
Result Count - How many items are produced.
Difficult - Difficulty level.
Ingredients;
Level creation
To create a new level, you first need to make a new scene in Unity.
Go to Scene and use Create > Scene. Name it Test, for example.

Open the scene and create an object (Create Empty) called Level

Reset Position coordinates and add the component called Environment Level

Add some scenery, for example from 3D Object > Terrain
(Important! All static non interactive items like houses, trees, etc, should always be inside the object Level. Otherwise they won't be visible.

Set the location size to 50 tiles. 1 tile = 2 units in Unity. So, to make the location 50 tiles, input Terrain Width 100 and Terrain Length 100.


Put in tags PathGround and layer Level.


Add an object to Level, call it Path. Add the Pathfinder component (pathing map) make it look for path on 50 tiles.

Go to Path Editor and do:
1. Clean Map
2. Calculate raycast highest
3. Calculate passability


Now add entry point to Level and call it EnterPoint (this is vital!)

Thus, the first location is ready. Now, do the command called Save Level, and build your mod. (Game > Build Mod). Test the level in game by using the following console command: "ChangeLocation SceneName EntryPointName", for this example that would be, "ChangeLocation Test EnterPoint".
How to add a new character
To create a character, use Game > Entities > Create Character Prototype, save to Assets/Resources/Entities/Character. Name him Test.

To make creating a dialogue easier, let's take an already made one and rename it for our purposes.
Find Alexander's dialogue, press Dowload, and rename it as Test.
Connect the dialogue to the character.


Now you can add this character to the scene. Create an empty object, add the Character Component to it, put the Test character into the Character field, drag and drop any creature type into Creature from the Asset Viewer.

Now you can Save Level and test.

NB: Putting new creature prototypes made from scratch asks for advanced 3d modelling skills and animation skills. We recommend learning from Unity manuals to achieve this level of skill. The game uses Mixamo skeletons. Models made with Mixamo skeletons will automatically align with the game's animation controller. To animate other skeleton types you will need to set them up manually. An example of this is in the ModKit wolf example.

Node Editor & first dialog
Let's look at a sample dialogue. To do that, first you need to get into the directory:


Assets/Resources/Entities/Dialog pick a file called MyNPC, and use the Inspector to open up the (Node Editor).


Node Editor is a flexible tool for making visual scripts, from dialogues to level generation to NPC behavior.
We will use the example of MyNPC to look at all the operations inside the dialogue.
1. Script starting point (START)
2. Start new dialogue with a new character. (DialogBegin)
3. The NPC (Phrase)
4. The protagonist's (Answer)
5. A connection block, that's empty but allows for complex logic and branching.
6. Checks the inventory for a certain item.


Select the block to make changes.


To make new block, use the right mouse button on the empty space and select the type.


To connect blocks, hold the button on the lower port and connect to any block.
Adding weapons, items, interactive objects
Game objects consist of a Prototype and a Prefab that must be paired.
To change already existing ones, load them from the AssetViewer and make all the needed modifications. To make a new item, you will need the visuals for it.

The test mod contains examples of new items addition into the game.
Always note the following:
- Connection between prefab and prototype. For example EPistol contains WeaponComponent where EPistol is in the Prototype line.
- Physical model to interact with the object. This is usually the Box Collider.
- Additional scripts for visualization. Weapon Link for example contains special effects settings for weapons.

New weapon prefab example.

New uniform prefab example.

Prefab example for a crate.
Add characters to existing locations
To add a character to a map already available, do:


Find the location script. For example, we will be adding a character into KRZ proper (City_2). Use Asset View to find Level_City_2 and get the script (Download).


Add new character:

1. Add checks on creation: HasKeyword, Key: MY_MOD_CITY_INIT and connect START with a new logic block.


2. If the object registry wasn't created yet, do it now! Key: MY_MOD_CITY_INIT


3. Add Spawn point, Position: 154.17, -2.171893, 132.62 -This is the position of a bench near the Lenin statue.


4. Now lets make a character. To make him sit, input: Asim.sitting_1 in Asset View and drag "Behavior" to the correct field.



Build and test.

PIE (Play In Editor)
Additionally, you can open any scene from the game by navigating to Game > Scene List.

After loading the scene, you can run a test in the Unity Editor. Just don't forget to create a player for this test:
1. Create a new GameObject in the scene and change its name to "Player."
2. Add the "CharacterComponent" and fill out the fields (creature, character) from the AssetViewer.


3. Set the Caps to "Player." and write the name as "player" for the Fraction.


4. Adjust the position of your GameObject for a better starting point.


Click the 'Start Play' button and enjoy your test.


Note: The game in PIE mode will work fully except for returning to the main menu. If you encounter any bugs or have suggestions, please contact us at support@atomrpg.com
ScenePrefab
With the latest ModKit update (no game update required), you can also create an object in the scene that will reference a part of the scene from the original location. To do this, load the scene from ATOM, select the root object you need, and then click Game > Create ScenePrefab. This will create an object that you can easily move (copy and paste) to your own scene.


33 Comments
Positiff 7 Dec, 2023 @ 3:23am 
It is not possible to change the Craft recipes of the original game through modification (for example, Quality Knuckleduster). Is this a mistake or was it done on purpose?
twitch.tv/edwin_fox 2 Feb, 2023 @ 10:07pm 
Don't leave your politeness in the cold, @foraboda. Wear it.
sxdemon1988 15 Jan, 2022 @ 11:43am 
this is an old learning guide unfortunately. use a different manual. there are all relevant videos and guides
forabora 15 Jan, 2022 @ 3:28am 
I would make a nice story for this game but your so called "tutorial" is a piece of garbage.
I hope I'll find some other tutorials which explain the core mechanics.
forabora 14 Jan, 2022 @ 5:43am 
And what to do with: "No valid Unity editor licence found" message?
forabora 14 Jan, 2022 @ 5:27am 
Ugh. Well. I barely understand this tutorial. It's too concise.
First of all what should I do with the ModKit?
There is no download there....
f.desmettre 19 Dec, 2021 @ 9:47pm 
Is there any tutorial to learn how to modify or create skills, abilities and distinctions?
I don't have any clue how to start, and this manual does not address this topic.
Davoker 5 May, 2021 @ 8:51am 
How do you convert an image (of an NPC for example) in .assets format into something editable with a common graphic software?
dr46onfusion 22 Jan, 2021 @ 6:06am 
To make something 'static' is probably to set it to the lowest tier, and set the rolls to make it always 100% there.