Post by Kyle Gagner on Aug 8, 2011 14:17:05 GMT -5
Vashon Island Programming Club
Despite appearances, .vipc files should be easy to use. I will soon be posting some Python code that allows you to effortlessly interface with .vipc files without knowing thing one about hexadecimal or big endian or any of those things.
You may be wondering, "what is .vipc and why would I use it?"
I always used to put all of the data I used for programming into .dat files. For example, if I was making a game, I would put the data for the geometry of the world into a file like World.dat
Unfortunately, I ended up frustrated by my plethora of indistinguishable .dat files. I couldn't tell which files went with which programs.
.vipc files fix all of this, and I'm sharing the wonderfulness with you! A .vipc file can contain ANYTHING you want it to contain, there are no restrictions, but .vipc files are easier to organize because they contain a small, 8 byte file header, right at the beginning. The 8 bytes are split into two 4-byte groups. Both groups represent numbers. The first number contains a user ID. Every user gets a unique ID number, so you can always determine the author of the file format that a particular .vipc file uses. The second number is a subformat ID. Every user, when authoring a new format, will use their ID as the first four bytes, and then some arbitrary number for the subformat ID. It DOES NOT matter what the subformat ID is. However, when a user gets a program working, and it uses a particular file format and the .vipc header, they should choose a particular subformat ID for that KIND of file, and then only use that subformat ID when working with that kind of file. If they want other people to be able to use their subformat, they can write documentation on how their file format works, and then register it in the Subformat Registration thread with a particular subformat ID. Any person wishing to create a file with that format will NOT use their user ID, they will use the format's author's ID and the subformat ID. That way, two users can register the same subformat ID without conflict. Your user ID helps distinguish what the file does, not just who invented that kind of file.
To clarify...
Sean: So what does the Id actually do?
me: It does 2 things
1. It identifies the author of a file subformat
2. It helps identify what subformat a file uses
Sean: What is a sub format
me: .vipc is the file format, but .vipc files don't do much, the programmer can add any data they want to a .vipc file in any format they want to add it in, this is the subformat
Sean: Oooooooo
Sean: So like, I could make a vipc that stores world data and another that holds like, the rendering code?
Or am I getting confused here
me: Yep
But I would still store code in .py files
Sean: There's a tree contacting powerlines and is smoking pretty crazy
To get started with the .vipc file format follow these easy steps:
1. Register yourself:
Every programmer affiliated with the Vashon Island robotics club in any way (by membership, frendship, whatever...) may register a user ID here vashonprogramming.proboards.com/index.cgi?board=register&action=display&thread=2
2. Start programming! Seriously, that's it. Here's a small sample code in Python to write a .vipc file header, just to get you started...
Despite appearances, .vipc files should be easy to use. I will soon be posting some Python code that allows you to effortlessly interface with .vipc files without knowing thing one about hexadecimal or big endian or any of those things.
You may be wondering, "what is .vipc and why would I use it?"
I always used to put all of the data I used for programming into .dat files. For example, if I was making a game, I would put the data for the geometry of the world into a file like World.dat
Unfortunately, I ended up frustrated by my plethora of indistinguishable .dat files. I couldn't tell which files went with which programs.
.vipc files fix all of this, and I'm sharing the wonderfulness with you! A .vipc file can contain ANYTHING you want it to contain, there are no restrictions, but .vipc files are easier to organize because they contain a small, 8 byte file header, right at the beginning. The 8 bytes are split into two 4-byte groups. Both groups represent numbers. The first number contains a user ID. Every user gets a unique ID number, so you can always determine the author of the file format that a particular .vipc file uses. The second number is a subformat ID. Every user, when authoring a new format, will use their ID as the first four bytes, and then some arbitrary number for the subformat ID. It DOES NOT matter what the subformat ID is. However, when a user gets a program working, and it uses a particular file format and the .vipc header, they should choose a particular subformat ID for that KIND of file, and then only use that subformat ID when working with that kind of file. If they want other people to be able to use their subformat, they can write documentation on how their file format works, and then register it in the Subformat Registration thread with a particular subformat ID. Any person wishing to create a file with that format will NOT use their user ID, they will use the format's author's ID and the subformat ID. That way, two users can register the same subformat ID without conflict. Your user ID helps distinguish what the file does, not just who invented that kind of file.
To clarify...
Sean: So what does the Id actually do?
me: It does 2 things
1. It identifies the author of a file subformat
2. It helps identify what subformat a file uses
Sean: What is a sub format
me: .vipc is the file format, but .vipc files don't do much, the programmer can add any data they want to a .vipc file in any format they want to add it in, this is the subformat
Sean: Oooooooo
Sean: So like, I could make a vipc that stores world data and another that holds like, the rendering code?
Or am I getting confused here
me: Yep
But I would still store code in .py files
Sean: There's a tree contacting powerlines and is smoking pretty crazy
To get started with the .vipc file format follow these easy steps:
1. Register yourself:
Every programmer affiliated with the Vashon Island robotics club in any way (by membership, frendship, whatever...) may register a user ID here vashonprogramming.proboards.com/index.cgi?board=register&action=display&thread=2
2. Start programming! Seriously, that's it. Here's a small sample code in Python to write a .vipc file header, just to get you started...
import struct
def VIPChead(file,userID,subformat):
file.write(struct.pack('>I',int(''.join(userID.split()),16)))
file.write(struct.pack('>I',subformat))
file = open('test.vipc','w')
userID = input("Enter your user ID: ")
subformat = input("Enter a subformat ID (some arbitrary number): ")
VIPChead(file,userID,int(subformat))
file.close()