The Project file is created by the game and holds all the data for the world that is not included as terrain. It is in xml format and can be read and modified using many different tools, such as a text editor.
This article is initially a copy of the discussion thread from the lefora forum and will be added to as needed.
-i recommend also watching aesop redux's tutorial video, "hacking infinite ocean". Its very helpful. Its in the video section.
-i also recommend reading posts of junkonwheels. Its in the tips and guides section.
-if anyone makes a new discovery, please tell me and i will add it in this thread along with the credits.
-if you have a question or want help, pm me. I will do my best to help you.
-if someone make tutorial videos, that would be great.
OPENING THE WORLD FILE
-opening it in moblie-
If you are android user, you can easily edit .xml with your phone. There is an app called File Manager made by Cheetah Mobile in the google play. I use this app for editing and its very nice. i recommend using this app because it can open a zip file without unzipping it and it can change a zip file to a different file e.g. .scworld or .png just by changing the extention and this is very important.
1.Upload the world that you want to edit to sd card.
2.open file manger and scroll down until you find a folder named "Survivalcraft".
3.enter it. There will be the file of the world you had uploaded. Select the file than change the extention to zip.
4.open the zip file(You can open it without unzipping it if you use the app i recommended). You will see three files; chunks.dat, project.bak, project.xml. Chunks.dat contains the data about chunks (duh) and contains amazing things but to edit this you need to know about hex editing and requires a computer. Open project.xml file.
5.once you are done editing, save your modifications and change the extention of the zip file to .scworld.
-opening it in pc-
Many people seem to open .xml by using pc. I think you have to upload the world to dropbox, open dropbox in pc, move the world file and edit it. Im not sure because i dont have a pc. You can open the .xml via C:\Users\username\AppData\Local\Packages\20961CandyRufusGames.Survivalcraft2_c7jxg4av36ap6\LocalState\Worlds\World (0-20) and you will find the .xml
.XML EDITING TUTORIAL
this informations were earned through my experience so i dont know all things. Also i skipped some things that i thought that wasnt very important.
•on top of the file, there will be Player section. It contains your spawn position(or your last sleeping place) and spawn time etc. You can edit spawns count to edit your number of respawn.
•below it there will be a long list of the spawned chunks. if you traveled around a lot, the list gets longer. And if you edit spawns data, you can easily spawn rare animals. But this method has a few problems..... Im still studying this section.
•below it there will be certain blocks behavior e.g. signs or weather. You can edit weather start/ending time to make a rain season or a drought.
- •below it there will be Gameinfo section - this section is VERY USEFUL. Most things in this section can be understood very easily so i will only write about certain things;
-game seed:you can figure out the seed of a randomly generated world but for some reason using that seed to another world brings different result.
-game mode:You can switch creative mode to cruel mode and vice versa. Useful when you want to create survival map or had died in cruel mode.
-terrain/ocean block index:you can fill the ocean with other blocks or create infinite ocean by editing this. Only works on flat worlds.
-terrain generation mode:if you change a flat world to a normal world, it always drops you in the ocean. I think this is because of spawn position but it will get too long if i go to that.
•below it there will be certain blocks behavior. If you type in coordinates in the magnet behavior, you can get an invisible magnet at that location.
- •a little below it there will be Entity section - the last one. This section is also INCREDIBLY USEFUL. I might write a Entity section tutorial in a different thread because there are so many things that can be done by editing this section.
This is a list of things that can be done by editing entity section;
-teleport player/animals (by editing position)
-make player/animals immortal (by editing health in vital stats)
-make animals fly in creative (by enabling creative flying mode)
-spawn rare animals(by putting in their data)
-despawn animals. they just disappear, like dead animals do.(by adding DespawnTime value)
-bring animals from the dead. Only works when the body still exists. (by modifying health and deathtime?)
-make indestructable boat(by editing hitpoint of the boat) - with this, you can travel in magma! Sadly the heat will kill you.
-and many more(i cant remember some things right now :( )
- this is the data of white bull, white tiger, orca and beluga. Copy and paste it in the entity section. You have to replace the black dots(●) with appropriate values.
Sorry if the explanations werent very detailed.... English isnt my first language so i have some trouble at detailed discription. :( Please pm me if you dont understand something.
MEMORY BANK BEHAVIOR ENTRY
This is the actual code for the MemoryBankBlockBehavior section in a sample xml file:
Values Name="[b]MemoryBankBlockBehavior[/b]" Values Name="[b]Blocks[/b]" Value Name="3405,66,5002" Type="string" Value="FEDCBA9876543210;3" / Value Name="3403,65,5004" Type="string" Value="000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F;0" / /Values Values Name="[b]Items[/b]" / /Values
That is the code for two banks placed and programmed with data.
What that code means:
"MemoryBankBlockBehavior" has two sub-heads - "Blocks" and "Items".
The "Blocks" heading lists every bank by a unique 'Name', which is actually their location. Each bank in this list has two values. The first value is the data in that bank. The second value is the data that is currently being output by the bank.
As you can see, the programmed data assumes all trailing data are '0's. The first bank was only programmed in the first row, so the remaining data are all '0's. The second bank was only programmed in the last cell so all leading data was fillled in as '0's. The first bank has a battery connected to the AddressLow input which is supplying a steady voltage value of 'C' to the input. This causes the bank to output a '3' as indicated. The second bank has nothing connected to the address inputs and accordingly is outputting a '0'.
What the "Items" heading means for the bank behavior is yet unknown.
Note that this is NOT the block data for the memory bank so does not include the bank's orientation or connections. That information is inside the chunks file.
This means that it is possible to program every bank in a world, and set its current state outside of the game itself.
TRUTH TABLE BEHAVIOR ENTRY
The xml code for a truth table entry is:
Values Name="[b]TruthTableCircuitBlockBehavior[/b]" Values Name="[b]Blocks[/b]" Value Name="3407,66,4999" Type="string" Value="0F0000000000000F" / /Values Values Name="[b]Items[/b]" / /Values
The structure is the same as for the Memory Bank. It has two sub-headings, "Blocks" and "Items". Each table listed in the block section is also identified by its location. There is only a single value for each table and this tells how it is programmed. Each digit in the string represents one checkbox in the table's interface. The left-most digit is the top box, etc. Where the box is checked, an 'F' is present in the file.
This shows that through the xml file, we can do something that cannot be done 'normally', however! Each input and the output are normally assumed to be binary (digital). But, the above data shows that the output may be treated as a hexadecimal (analog) value. Rather than outputting an 'F' (digital '1') the table can actually output ANY hex value. This feature gives us more flexibility in the Truth Table although it can only be utilized via editing the xml file. And it has been verified to work.
World modification via XML
You can have a world with only certain areas modified to “Flat”. These areas could be at any level you wish, from 0 to 120. The rest of the world may be generated normally with common terrain features.
Wherever the step below says “open the xml file”, that means to: 1 open a good file manager, such as Xplore 2 find the file you just saved 3 rename the file’s extension to “.zip” 4 open the zip file (with Xplore, you must close the folder that the file is in, then re-open it so it recognizes it as a zip file) 5 locate the file proect.xml, inside that zip folder/file and open it with a text editor (with Xplore, long tap it and select ‘edit text’) That may seem like a lot but it becomes one regular
When the step says “close the xml file”, that means to: 1 save the changes in the file 2 close the text editor 3 open the file manager (Xplore automatically opens it when closing the editor) 4 change the file’s extension back to “.scworld”
Making patches of flat terrain in a normal world: 1 create a random or seeded world 2 mark any chunks you wish to keep as normal terrain (place or remove any block in that chunk) 3 exit the world and save it to SD 4 open that world’s xml file 5 change terrain type to Flat 6 set new terrain level 7 set terrain block type as wanted 8 close the xml file 9 load it into SC and open it 10 mark all chunks to keep at that level 11 exit the world and save it to SD 12 open that world’s xml file 13 change back to Normal and level 64 14 close the xml file 15 load it into SC and open it 16 you have a ‘normal’ world with deep pits or high towers of flat terrain You can repeat this process for any other levels you wish, higher or lower than normal. These will be flat with the terrain block specified.
If you start with a “Flat” world, you could change it to Normal to generate terrain but it always generates infinite ocean with islands. Even if you don’t modify it before making it “Normal”. As long as terrain generation is “Normal”, the terrain level doesn’t seem to matter.
There are two general entries for furniture use. The first is for each furniture design and the second is for furniture packs.
This is an example basic entry for a furniture design:
After removing the formatting to male it more human readable:
Name = "21" Name = "sign wrt" TerrainUseCount = "1" Resolution = "16" InteractionMode = "ElectricButton"
Values = ". . ."
There are 6 fields in this entry. The first Name is the internal reference to this particular furniture design. The game assigns this unique number to each design. The second Name is what the player named this design. The third field, "TerrainUseCount" keeps track of how many times this design is used in the world. The fourth field records the resolution, or initial size of the design. This can be from 2 to 16. The fifth field, "InteractionMode" tells the system what 'type' of furniture this piece is. The last field holds the actual design parameters of this piece.
The valid values for the interaction mode are: "None", "ElectricButton", "ElectricSwitch", "Interactive" and "Connected". For the switch, interactive and connected types there will be an additional field:
or: LinkedDesign = "29"
This is how each different design for a changing piece is defined and creates a linked list. The value specifies the next design in this list. For a switch, there will only be two designs in the list. For others, there may be up to 9 different designs.
A linked list can usually be any length at all. The same is true of these. The reason there is a maximum of 9 different states is because of the limitation of making them in the crafting table. However, the xml file may be modified to create an interactive piece of virtually any number of states.
Furniture Packs Here is a sample entry for a furniture pack (set):
Name = "0" Name = "Hexkeys" ImportedFrom = "Hexkeys.scfpack" Indices = "0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15"
As in furniture pieces, the first "Name" is assigned by the game. The second "Name" is the name given by the creator of the pack. This third field, "ImportedFrom" defines the file this pack was saved as. It will not be included if the pack was created in the current world. The last field, "Indices" specifies which individual pieces are included in this furniture pack.
Custom colors in signs
found a way to put cuustom color on a sign colors, you normal not have by edit the save game you can replace the xna color code that set the color to a custom one. link to xna chart under here were to find this code open save game whit winrar next open the .bak file use notepad for this look for signblockbehavior under here you find all your sign,s that look like this
<Values Name="1"> <Value Name="Point" Type="Game.Point3" Value="2781,68,3565" /> <Value Name="Line1" Type="System.String" Value="i" /> <Value Name="Color1" Type="Microsoft.Xna.Framework.Color" Value="255,255,0,255" /> </Values>
EXPLANE OFF THIS
<Values Name="1"> SIGN NR
<Value Name="Point" Type="Game.Point3" Value="2781,68,3565" /> LOCATION IN THE WORLD (NOT EDIT THIS) <Value Name="Line1" Type="System.String" Value="i" /> TEXT ON THE SIGN HERE I HAVE THE i ON LINE 1 BUT IF YOU USE MORE LINES YOU SEE LINE 2 ENZ
<Value Name="Color1" Type="Microsoft.Xna.Framework.Color" Value="255,255,0,255" / BY EDIT THIS VALUE YOU CAN PUT IN A CUSTOM ONE