Page 2 of 5

Re: OXP Development Best Practices – meta

Posted: Mon Jul 16, 2012 11:54 am
by Pleb
Ah, I may have been going about this in the wrong way then. Think I may have over complicated it for myself! :lol:

I will try again tonight to see if I can convert it, and if not I will simply have to exclude it from my next release. Thanks Ahruman! :)

Re: OXP Development Best Practices – meta

Posted: Mon Jul 16, 2012 4:18 pm
by BuggyBY
Having never developed an OXP, the only disadvantage I noticed with Notepad is the lack of displayed line-breaks when viewing Unix formatted text files. (As an aside, I never heard anyone speak quite that highly of Windows Me - in my opinion, having only very briefly used it at a friend's place, the biggest problem after lack of Unicode was its FAT32-imposed file size limitation. The commonly-cited problem with crashes after resuming from sleep when some USB device had come unplugged was just a config issue, then?)

Re: OXP Development Best Practices – meta

Posted: Mon Jul 16, 2012 5:02 pm
by Wildeblood
BuggyBY wrote:
As an aside, I never heard anyone speak quite that highly of Windows Me - in my opinion, having only very briefly used it at a friend's place, the biggest problem after lack of Unicode was its FAT32-imposed file size limitation. The commonly-cited problem with crashes after resuming from sleep when some USB device had come unplugged was just a config issue, then?
I don't know about that. "Out of the box" it was a shocker. But I found most of the problems seemed to be caused by System Restore (a shiny, new feature in ME). Once I learnt how to disable that it just hummed along. I didn't see a BSOD for years (and never had an occasion when I thought, "I wish I could do a system restore."), until the computer started playing up a few months before it finally gave up the ghost. I wish my current celeron/Win7 notebook was as reliable. It freezes up almost daily.

Now, about this converting <pointyBrackets>XML<pointyBrackets> business. It's very simple XML with no attributes, mixed namespaces, or other hoopla, so a CSS stylesheet should be all you need. You just need to know all the the possible element types... <string></string> <array></array> <key></key> etc...?

Re: OXP Development Best Practices – meta

Posted: Mon Jul 16, 2012 6:21 pm
by Shipbuilder
There is also a converter to change XML to Openstep (Section 7 of the Property list doc on the Wiki).

See here http://wiki.alioth.net/index.php/Property_list

Re: OXP Development Best Practices

Posted: Tue Jul 17, 2012 12:52 pm
by JensAyton
Rewove the threads by request.

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 12:36 pm
by PhantorGorth
After reading SandJ's list of ideas (now deleted) I was able to see that I have left out some additional areas that this thread should cover. These are:
  • Correct packing of the OXP. Including documentation and Change Logs files.
  • Version numbering.
  • Licensing & copyrights.
  • Documentation writing.
  • Wiki entries for OXP.
I am about to add these to the first post

To start here are few points for the Basic Dos and Don'ts:
Dos:
  • Always comment your code. It helps both you and others later if you put comments in your code that explains what each function does or what certain parts of the code do. The more thorough the commenting is the easier debugging and maintaining is.
  • Always indent your code. Either use a tab or a fixed set of spaces for each level of indenting. If you uses tabs always use tabs. If you use n spaces always use n spaces. Doing this will indent your code consistently so it is much easier to read and to find the relationship between parts of the code.
Don'ts:
  • Do not create global variables always do this.<varname> = <value/expression> never do var <varname> = <value/expression> that are not inside a function. Reason is because the var ... form when not inside a function is global and that variable name could already be used by some other OXP. Using "this" to declare them makes the variable part of the worldScript object that is your script and therefore will never clash with a variable from another OXP. Generally there is no need to create a global but if you find a reason to do so it is suggested you prefix the variable name with the name of the OXP. (This reduces the chance of a name clash)
  • Do not hard code System names in mission screen and manifest screen instruction texts. Instead use the code "%Jxxx" where xxx is the number of the system. (e.g. "Go to LAVE main station to collect Agent Jones" should be "Go to %J007 main station to collect Agent Jones".) The reason for doing this is that names of systems can be altered by OXPs so you can't be guarantee that it will always be the name you hardcoded into the text. "%Jxxx" is one of the codes that get automatically substituted in mission and description texts.

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 3:04 pm
by JensAyton
PhantorGorth wrote:
  • Correct packing of the OXP. Including documentation and Change Logs files.
Don’t put your OXP and its documentation in a folder also called <something>.oxp. It causes confusion about what actually constitutes the OXP, and on Macs the entire folder will appear as a single file so the documentation can’t be seen.

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:09 pm
by PhantorGorth
Ahruman wrote:
PhantorGorth wrote:
  • Correct packing of the OXP. Including documentation and Change Logs files.
Don’t put your OXP and its documentation in a folder also called <something>.oxp. It causes confusion about what actually constitutes the OXP, and on Macs the entire folder will appear as a single file so the documentation can’t be seen.
I think I am guilty of this one!

So what is the best high level structure:

Code: Select all

Name.zip
   ├> Name.oxp (folder)
   │     ├> (subfolder)
   │     ┊
   │
   └> Documention (file)
or

Code: Select all

Name.oxp.zip
   ├> Config (folder)
   ├> Models (folder)
   ┊     
   └> Documention (file)
?

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:19 pm
by Smivs
The .zip file should contain the .oxp folder, and a readme (and any other documentation).

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:20 pm
by PhantorGorth
Smivs wrote:
The .zip file should contain the .oxp folder, and a readme (and any other documentation).
So the first example I gave then?

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:21 pm
by Cody

Code: Select all

Name.zip
   │
Name (folder)
   ├> Name.oxp (folder)
   │     ├> (subfolder)
   │     ┊
   │
   └> Documention (file)
Perhaps?

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:26 pm
by Smivs

Code: Select all

       .zip
         |
 ------------------
 |                |
.oxp            readme
 |
sub-folders eg Config

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:27 pm
by PhantorGorth
EV's version modified for consistency
El Viejo wrote:

Code: Select all

Name.zip
   └>Name (folder)
        ├> Name.oxp (folder)
        │     ├> (subfolder)
        │     ┊
        │
        └> Documention (file)

Perhaps?
Given that most OSs/Archiving Programs treat the .zip file as a special kind of folder surely that having a folder Name is redundant?

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:28 pm
by PhantorGorth
Smivs wrote:

Code: Select all

       .zip
         |
 ------------------
 |                |
.oxp            readme
 |
sub-folders eg Config
that's the same as my:

Code: Select all

Name.zip
   ├> Name.oxp (folder)
   │     ├> (subfolder)
   │     ┊
   │
   └> Documention (file)
I better go and update my OXPs then :-(

Re: OXP Development Best Practices

Posted: Sat Jul 21, 2012 5:31 pm
by Cody
PhantorGorth wrote:
... surely that having a folder Name is redundant?
That's how I find many OXPs packaged already - it makes sense to me, but that means zilch!