Jump to content

Working notes


sigget

Recommended Posts

The purpose of this forum is for us to have a place where we can gather our combined knowledge of what works and what doesnt when modding this game. Information such as format descriptions, tips and tricks, and so on.

 

If everything works as they're supposed to you should be able to edit all the posts made here. And please do! Try to keep the number of posts _very_ low and instead alter the posts already made.

 

By creating threads we can introduce the concept of chapters.

 

So lets create THE ufo:am documentation together!

Link to comment
Share on other sites

Structure:

I suggest we split it into categories, and that each new post in each category get a number. Say that category one is VFS. Every new post to this category should be named:

1.00: VFS - Virtual File System

1.01: How to create VFS

1.02: How to unpack VFS

 

2.00: Gamedata.vfs - The main data file

2.01: Main categories of Gamedata

2.02: Armor reference

 

And under each subject/post there should be a index in the first post, and under categories. I will make one post to show you what I mean.

 

Categories:

1: VFS - This category should include VFS information of all kinds

2: Gamedata.vfs information

3: Localizationpack.vfs information

4: Savegame information

5: Configuration information

6: VFS tool information/guides

7: Alpine information/guides

8: Modding guides

 

These are just some of the things I can think of. Please supply your own thoughts on the matter.

Link to comment
Share on other sites

This is the a structure Fnurg and i put together for the ufo spec site, we've spent some time discussing what a good structure would look like and this is what we've come up with so far. I strongly believe that even though it was the key to start modding the vfs file spec and so on should be put in an appendix as its not very likely modders will ever need to see it.

 

This structure was made for a web page and has a small amount of large chapters, i think it would be a good idea if we could go with a larger set of short chapters.

Introduction
  News
  Tools
  Authors
  Contributions
  Contact

Global
  Fonts
  Music and Sound
  Light configs
  Difficulty
  Events & Progress

Strategic
  Biomass
  Bases
  Dogfights
  Research & Development
  UFOs

Tactical
  Battleground
     Special scenes
     Generator
     Kulisy
     Tilesets
     Ublocks
  Items - Weapons, Ammo, Armor
  Monsters
     AI
  Squad Members
     Level
     Attributes
     Skills
     Training
     Inventory structure
     Experience
  Particles

Interface
  Global
  Strategic
  Tactical

Rendering
  Vertex programs
  Geosphere
  .
  .

Localization
  .
  .

Savegames
  file1
  file2
  .
  .

Modding Refs
  Quick Mod Guide
  Weapons/Items
  R&D
  AI
  .
  .

Technical Refs
  Vfs Reference
  File Formats
  .
  .

Link to comment
Share on other sites

Well, then I leave you and Fnurg in charge of setting up the structure sigget. I don't really know the structure of things, and a more detailed version of what you just posted seems like a good thing. So, are you two good to go on taking the responsibility of this?
Link to comment
Share on other sites

Hiya chaps,

Sorry i havent been around for a while. No access to a computer for a few days. Been suffering VDU withdraw symtoms :(

 

Yea. I'm certainly still up for working on this documentation.

 

perhaps we should follow Slaughters method of posting. A topic for each section such as "Gamedata : Weapons" and "Localization : Languageindex" or something like that. We could use the structure that we created as a guideline for what topics should be posted and yup, extend it to include smaller "chapters". the "Items - Weapons, Ammo, Armor" under tactical would be huge!

Alternativly, mabey the file-by-file reference that Aralez suggested would be best?

 

We also need to work out what the posts should contain. I think the opening post should have an overview of the file contents and structure. For example

 

- What the file does (short description)

- The structure of the entries (much like the c-style structs you have with file format reference docs) with meanings, ranges, data types and such.

- Links to other files referenced/needed (links to other topics)

- List of ammendments to this post

 

And of course siggets suggestion of keeping posts down to a bare minimum is essential. who wants to wade through 4 pages of posts? :(

Link to comment
Share on other sites

Im not into the idea of a file by file reference, the context will get lost with that model. It could still be useful as an appendix with file by file comments and links into sections related to the file.

 

Suggested Structure. We will have to edit this as we go along, no matter how much we plan it will never be perfected until we get some real hands on experience. Whats important now is that we get a good enough structure so that we can start writing. When we're satisfied this structure should be copied into an index topic and have each row replaced with a link to the right post. So that we can get a full view somewhere.

 

1. Introduction
  1.1 Philosophy
  1.2 Tools
  1.3 Contribute!

2. Gameplay
  2.1Introduction
  2.2 Phases
  2.3 Research

3. Items 
  3.1 Weapons
  3.2 Ammo
  3.3 Armour

4. Soldiers
  4.1 Level
  4.2 Experience
  4.3 Attributes
  4.4 Skills
  4.5 Training
  4.6 People (Soldier templates)

5. Enemies
  5.1 Equipsets
  5.2 AI

6. Tactical Battleground
  6.1 Vegetation & Land Areas 
  6.2 Tilesets
  6.3 Ublocks
  6.4 Kulisy (stageprops)

Appendix A - File by File Reference
  A.1 share
  A.2 strategic
  A.3 tactical

Appendix B - VFS specification

 

This structure and the whole documentation will require ALOT of editing so dont be afraid to change it and add to it!

Link to comment
Share on other sites

Apart from this structure will have a topic for discussions, this topic, and a topic for a TODO list, detailing whats left to do and what is currently begin researched, so that its easy to see where one can start contributing without redoing something thats already been done.

 

Proposed Structure

 

1. Introduction
 1.1 Philosophy
 1.2 Tools
 1.3 Contribute!

2. Gameplay
 2.1 Introduction
 2.2 General Configuration
 2.3 Difficulty Settings
 2.4 Phases
 2.5 Events
 2.6 Research
 2.7 UFO Missions
 2.8 Bases

3. Items 
 3.1 Weapons
 3.2 Magazines
 3.3 Ammo
 3.4 Armour

4. Soldiers
 4.1 Level
 4.2 Experience
 4.3 Attributes
 4.4 Skills
 4.5 Training
 4.6 People (Soldier templates)

5. Enemies
 5.1 Internal name list
 5.2 AI
 5.3 Equipsets
 5.4 General Creature Settings

6. Tactical Battleground
 6.1 Vegetation & Land Areas 
 6.2 Tilesets
 6.3 Ublocks
 6.4 Kulisy (stageprops)

7. Graphics
 7.1 Models
 7.2 Effects & Particles
 7.3 Interface Windows
 7.4 Slideshow Animations

8. Ingame Text
 8.1 Localization
 8.2 UFOpedia (Glossary)

Appendix A - File by File Reference
 A.1 share
 A.2 strategic
 A.3 tactical

Appendix B - VFS specification

Link to comment
Share on other sites

That looks like a good structure. I have setup this forum to show all threads regardless of how many there is, and it is sorted ascending. This can be changed of course.

 

I think I will add a forum section for mods soon, and move stuff into it. One forum for released mods threads, one for this reference, one for general mod discussions and so on. I will also have a mods section for the site, with one section for Alpine, one for other mods, one for tools and so on. Sounds good?

Link to comment
Share on other sites

Good, then I will go for it. And yeah, the signatures are kind of messing things up. Even though the squirrel is cool! :(

I note there's a little "Enable signature" check box at the bottom of the post message box, does that work on a post by post basis or does it change the user's global profile?

 

If it's post-by-post, you could try overriding it for this forum. Or occasionally run an SQL query on the forum database which turns off that flag on all posts in the Modding Reference forum.

 

Fulby

Link to comment
Share on other sites

I added a section 9 today, not too sure its the right way to go, and then i saw that there was also a subsection called bases under gameplay, so now we have two subsections called bases, which one should we keep?

 

Im going out of town for the weekend, see you on monday!

Link to comment
Share on other sites

Have a look at this monster! Ive manged to traverse through the ublocks, i dont know what everything means but ive been able to figure out how the sizes of all the datablocks are determined. The problem is... where do i put all this info? An appendix on file formats perhaps?

 

///////////////////////////////
//
//  UFOBLOCK
//

UFOBLOCK
 VERSION <int>
 ..geom info array
 ..height info array
 COVER_INFO_ARRAY
   <int[width*height]>  // width and height of geom info array
 COVER_ARRAY_END
 ENTRY_POINTS
   <int> <float> <float>
 END_OF_ENTRY_POINTS
 ENTRY_POINTS_SPECIAL_FLAGS
   <int> <int>
 END_OF_ENTRY_POINTS_SPECIAL_FLAGS
 LEAVING_POINTS
   <int> <float> <float>
 END_OF_LEAVING_POINTS
 LEAVING_POINTS_SPECIAL_FLAGS
   <int> <int>
 END_OF_LEAVING_POINTS_SPECIAL_FLAGS
 TARGET_POINTS
   <int> <float> <float>
 END_OF_TARGET_POINTS
 TARGET_POINTS_SPECIAL_FLAGS
   <int> <int>
 END_OF_TARGET_POINTS_SPECIAL_FLAGS
 ..light config
 COMPILED_BLOCK
   EXPORT_VERSION <int>
   ..material list
   MESH_COUNT <int>
   SECTOR_COUNT <int>
   SECTOR <int>
     ..mesh
   END_OF_SECTOR
   TRANSPARENCE <int> <floats>
   ..varmesh
   ..lightmap
 END_OF_COMPILED_BLOCK
 ..particle list
UFO_BLOCK_END


///////////////////////////////
//
//  KULISA

KULISA <string>
 ..geom info array
 ..geom height array
 HITPOINTS <int>
 MODEL_LIST <int>
   MODEL_DESC int
     FILENAME <string>
     TRANSF_MATRIX <float[4,4]>
     SIGNATURE <string>
   MODEL_DESC_END
   ...
   PARTICLE_DESC <int>
     FILENAME <string>
     TRANSF_MATRIX <float[4,4]>
     SIGNATURE <string>
   PARTICLE_DESC_END
   ...
 MODEL_LIST_END


///////////////////////////////
//
//  GEOM INFO ARRAY

GEOM_INFO_ARRAY <int width> <int height>
 CELL_GEOM_INFO <28 bytes>
 ...
GINFO_ARRAY_END


///////////////////////////////
//
//  HEIGHTS INFO ARRAY

HEIGHTS_INFO_ARRAY <int width> <int height>
 <float[width*height]>
HEIGHTS_ARRAY_END


///////////////////////////////
//
//  LIGHT CFG

LIGHT_CFG_START
 LIGHT_PROFILE_BEGIN <string>
   SCENE_AMBIENT <float[4]>
   LIGHT <int>
     LPOSITION <float[4]>
     DIRECTION <float[3]>
     CUTOFF <int>
     CUTOFF_EX <int>
     COLOR <float[4]>
     FULL_RADIUS <float>
     END_RADIUS <float>
     LPREVIEW <bool>
     LENABLED <bool>
     LSHADOWS <bool>
     LNEG <bool>
     LTYPE <int>
   LIGHT_END
   ...
 LIGHT_PROFILE_END
 ...
LIGHT_CFG_END


///////////////////////////////
//
//  MATERIAL LIST

MATERIAL_LIST
 MATERIAL
   DIFFUSE_COLOR
   TEXTURE <int>
     FILE_NAME <string>
     RAW_IMAGE
     U_WRAP
     V_WRAP
     U_CLAMP
     V_CLAMP
     ALPHA_MODE <int>
     MIPMAP_OFF
     MIPMAP_ON
     MUTABLE
     IMMUTABLE
     TEX_GEN_S <buffer>
     TEX_GEN_R <buffer>
     TEX_GEN_T <buffer>
     TEX_GEN_R_KOEF <float>
     TEX_GEN_S_KOEF <float>
     TEX_GEN_T_KOEF <float>
     CUBE_MAP
     MODE <string>
   END_OF_TEXTURE
   ...
 END_OF_MATERIAL
 ...
END_OF_MATERIAL_LIST


///////////////////////////////
//
//  MESH

MESH <string>
 MATERIAL_REF <int>
 DEFAULT_COLOR <float[3]>
 VERTS <int num> <float[num*2]>
 PRIMITIVE_GEOMETRY_GROUPS <int>
 GROUP <int> <string>
   COUNT <int num> <int[num]>
 END_OF_GROUP <int>
 GROUP_NEIGHBORS <int num> <int[num]>
END_OF_MESH


///////////////////////////////
//
//  VARMESH

VARMESH
 TYPE <int>
 VX <int>
 VY <int>
 VWIDTH <int>
 VHEIGHT <int>
 HITPOINTS <int>
 ..variants
 ..effects
 DIRECTION <int>
END_OF_VARMESH


///////////////////////////////
//
//  VARIANT

VARIANT
 MESH_ID <int>
 HEIGHTS_INFO float[(vwidth*2+1)*(vheight*2+1)]
 ZOFFSET <float>
 PASSABLE_INFO <int[vwidth*vheight]>
 PARTICLE_ID <int>
END_OF_VARIANT


///////////////////////////////
//
//  EFFECT

EFFECT
 PARTICLE <string>
 TRANSFORMATION <float[4,4]>
END_OF_EFFECT


///////////////////////////////
//
//  LIGHTMAP

(weird internal lightmap)
LIGHTMAP
 VERSION <int>
 MESH_COUNT <int>
 MESH
   TEX_ID <int>
   VERTS <int num> <float[num*2]>
 END_OF_MESH
 NTEX_ID <int numtex>
 PROFILE <string>
   TEX_ID <int[numtex]>
 END_OF_PROFILE
 USIZE <int>
 VSIZE <int>
 COLORED <int>
 NOISE_SEED <int/float?>
 NOISE_AMPLITUDE <float>
 NOISE_LOFREQ <float>
 NOISE_HIFREQ <float>
 TEX_COUNT <int>
 TEXTURE <int> <char[width*height*2]>
 TEXTURE_HEIGHT <int> // this value overrides the height for the next TEXTURE only
END_OF_LIGHTMAP


LIGHTMAP
UFO
 VERSION <int>
 WIDTH_C <int>
 HEIGHT_C <int>
 PROFILE_UFO <string>
   LIT_CELLS <char[width*height*16]>
   PRECOMPF <int>
   PRECOMPF_MESH <int a> <float[a]>
   VAR_PRECOMPF <int num>
   VAR_PRECOMPF_INDEX <int>
   VAR_PRECOMPF_VARIANT <int a> <int b> <char[8*b]>
   ..lightmap
 END_OF_PROFILE_UFO
END_OF_LIGHTMAP_UFO


///////////////////////////////
//
//  PARTICLE LIST

PARTICLE_LIST
 PARTICLE_DESC
   PARTFILENAME <string>
   TRANSF_MATRIX <float[4,4]>
 PARTICLE_DESC_END
 ...
PARTICLE_LIST_END

Formats still missing: 
 extkulisa
 particle cfg
 particle grp
 scene
 model
 anim package 
 .video 
 .anim

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...