OXP Development Best Practices

Discussion and information relevant to creating special missions, new ships, skins etc.

Moderators: another_commander, winston

User avatar
Pleb
---- E L I T E ----
---- E L I T E ----
Posts: 908
Joined: Sun Apr 29, 2012 2:23 pm
Location: United Kingdom

Re: OXP Development Best Practices – meta

Post 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! :)
Desktop PC: CPU: Intel i7-4790K Quad Core 4.4GHz (Turbo-Charged) GPU: Nvidia GeForce GTX 1080Ti RAM: 32GB DDR3

Laptop PC: CPU: Intel i5-10300H Quad Core 4.5GHz (Turbo-Charged) GPU: Nvidia GeForce GTX 1650 RAM: 32GB DDR4
User avatar
BuggyBY
Dangerous
Dangerous
Posts: 108
Joined: Thu Feb 09, 2012 9:03 am

Re: OXP Development Best Practices – meta

Post 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?)
User avatar
Wildeblood
---- E L I T E ----
---- E L I T E ----
Posts: 2286
Joined: Sat Jun 11, 2011 6:07 am
Location: Western Australia

Re: OXP Development Best Practices – meta

Post 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...?
User avatar
Shipbuilder
---- E L I T E ----
---- E L I T E ----
Posts: 877
Joined: Thu May 10, 2012 9:41 pm
Location: Derby

Re: OXP Development Best Practices – meta

Post 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
The GalTech Industries Corporation - Building ships to populate the galaxies.

Increase the variety of ships within your Ooniverse by downloading my OXPs

Flying the [wiki]Serpent_Class_Cruiser[/wiki] "Thargoid's Bane"
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: OXP Development Best Practices

Post by JensAyton »

Rewove the threads by request.
User avatar
PhantorGorth
---- E L I T E ----
---- E L I T E ----
Posts: 647
Joined: Wed May 20, 2009 6:48 pm
Location: Somewhere off the top left of Galaxy 1 map

Re: OXP Development Best Practices

Post 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.
Chat and relax with other commanders in the [url=irc://irc.oftc.net/oolite]DS's Seedy Space Bar[/url]. The Coolest Bar in the Eight.

Phantor's OXPs: [EliteWiki] GalCop Rewards and [EliteWiki] Safe Docking
User avatar
JensAyton
Grand Admiral Emeritus
Grand Admiral Emeritus
Posts: 6657
Joined: Sat Apr 02, 2005 2:43 pm
Location: Sweden
Contact:

Re: OXP Development Best Practices

Post 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.
User avatar
PhantorGorth
---- E L I T E ----
---- E L I T E ----
Posts: 647
Joined: Wed May 20, 2009 6:48 pm
Location: Somewhere off the top left of Galaxy 1 map

Re: OXP Development Best Practices

Post 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)
?
Chat and relax with other commanders in the [url=irc://irc.oftc.net/oolite]DS's Seedy Space Bar[/url]. The Coolest Bar in the Eight.

Phantor's OXPs: [EliteWiki] GalCop Rewards and [EliteWiki] Safe Docking
User avatar
Smivs
Retired Assassin
Retired Assassin
Posts: 8408
Joined: Tue Feb 09, 2010 11:31 am
Location: Lost in space
Contact:

Re: OXP Development Best Practices

Post by Smivs »

The .zip file should contain the .oxp folder, and a readme (and any other documentation).
Commander Smivs, the friendliest Gourd this side of Riedquat.
User avatar
PhantorGorth
---- E L I T E ----
---- E L I T E ----
Posts: 647
Joined: Wed May 20, 2009 6:48 pm
Location: Somewhere off the top left of Galaxy 1 map

Re: OXP Development Best Practices

Post 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?
Chat and relax with other commanders in the [url=irc://irc.oftc.net/oolite]DS's Seedy Space Bar[/url]. The Coolest Bar in the Eight.

Phantor's OXPs: [EliteWiki] GalCop Rewards and [EliteWiki] Safe Docking
User avatar
Cody
Sharp Shooter Spam Assassin
Sharp Shooter Spam Assassin
Posts: 16059
Joined: Sat Jul 04, 2009 9:31 pm
Location: The Lizard's Claw
Contact:

Re: OXP Development Best Practices

Post by Cody »

Code: Select all

Name.zip
   │
Name (folder)
   ├> Name.oxp (folder)
   │     ├> (subfolder)
   │     ┊
   │
   └> Documention (file)
Perhaps?
I would advise stilts for the quagmires, and camels for the snowy hills
And any survivors, their debts I will certainly pay. There's always a way!
User avatar
Smivs
Retired Assassin
Retired Assassin
Posts: 8408
Joined: Tue Feb 09, 2010 11:31 am
Location: Lost in space
Contact:

Re: OXP Development Best Practices

Post by Smivs »

Code: Select all

       .zip
         |
 ------------------
 |                |
.oxp            readme
 |
sub-folders eg Config
Commander Smivs, the friendliest Gourd this side of Riedquat.
User avatar
PhantorGorth
---- E L I T E ----
---- E L I T E ----
Posts: 647
Joined: Wed May 20, 2009 6:48 pm
Location: Somewhere off the top left of Galaxy 1 map

Re: OXP Development Best Practices

Post 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?
Chat and relax with other commanders in the [url=irc://irc.oftc.net/oolite]DS's Seedy Space Bar[/url]. The Coolest Bar in the Eight.

Phantor's OXPs: [EliteWiki] GalCop Rewards and [EliteWiki] Safe Docking
User avatar
PhantorGorth
---- E L I T E ----
---- E L I T E ----
Posts: 647
Joined: Wed May 20, 2009 6:48 pm
Location: Somewhere off the top left of Galaxy 1 map

Re: OXP Development Best Practices

Post 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 :-(
Chat and relax with other commanders in the [url=irc://irc.oftc.net/oolite]DS's Seedy Space Bar[/url]. The Coolest Bar in the Eight.

Phantor's OXPs: [EliteWiki] GalCop Rewards and [EliteWiki] Safe Docking
User avatar
Cody
Sharp Shooter Spam Assassin
Sharp Shooter Spam Assassin
Posts: 16059
Joined: Sat Jul 04, 2009 9:31 pm
Location: The Lizard's Claw
Contact:

Re: OXP Development Best Practices

Post 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!
I would advise stilts for the quagmires, and camels for the snowy hills
And any survivors, their debts I will certainly pay. There's always a way!
Post Reply