People who want a fast actiongame and use time compression to get to the next port faster will NOT care for this. But many people who enjoy the sailing in seaview have already asked for a feature that lets you sail to another island without the map.
Here is an EXPERIMENTAL! mod that COULD one day develop into a publishable PotC add on. But for the time being I only want to exchange ideas and opinions. Cause my idea is surely only one of many possibilities, and together we may be able to develop a better solution.
The problem with sailing from one island to another is that each island is a seperate locationmodel. There exists always only ONE island in seaview. So if we want to sail to another island we must do a reload to another location. All we can do is to mask the trigger and the reload so that the player gets the impression of direct sailing.
The concept
-----------
My solution for that is that I divided the worldmap into virtual cells. Each cell contains one island, and if you reach the edge of the cell (after several GAMEhours of sailing) you are being teleported to the neighbouring cell. The teleport looks a bit different from the usual seareload, and with a bit of goodwill you can imagine that your seaview was only shortly interrupted by the lookouts "Land Ho!" call <img src="style_emoticons/<#EMO_DIR#>/keith.gif" style="vertical-align:middle" emoid="" border="0" alt="keith.gif" />
The islandcell are sort of octagonal, so that you can sail in the eight main compass directions. E.g. if you sail a few hours from Antigua aproximately westbound you'll reach FdF, the northwest sector takes you to Guadeloupe, north to QC, northeast to St Martin. In all other directions you'll get a gentle reminder that there is nothing but open sea <img src="style_emoticons/<#EMO_DIR#>/sailr.gif" style="vertical-align:middle" emoid="" border="0" alt="sailr.gif" />
Accuracy and "realism"
---------------------
That is of course an inaccurate affair and allows only "island hopping" navigation. You can't e.g. sail from Oxbay with a course of 024 degrees magnetic heading and hit Turks port a six days and 21 hours later. Instead you will sail aprox northeast from Oxbay into the new "Battle Rocks" islandcell, from there NE to Hispaniola, then northwards to Turks.
But islandhopping and coasthugging may well have been just what 17th century privateers used as navigation method. Cause navigation in those days WAS actually often a "guess and pray" affair. Charts and instruments were rather inaccurate, winds, drifts and currents unpredictable. Even the most professional naval masters often lost their way or even their ships because they had assumed a totally wrong position.
Not that realism always makes a good game, but I enjoyed to relive the suspense of seeing the last landmark disappear behind me and sailing on through the open sea, hoping that the right landfall would appear ahead.
Avoiding boredom
----------------
Sailing peacefully through the PotC sea may be nice for some time, but gets boring in the long run. So we need events and changes in the scenery to make the continous sailing interesting. We have already the mods for changes in weather & night/day, and the coastal ships. For the sailing AWAY from the coast I added random encounters with small fleets (like the map encounters) that appear ahead of you. That combined with KNB's "inaccurate spyglass" mod let's you experience the problems and decisionmaking of an age-of-sail captain:
<i>Your lookout reports ships at the horizon. In the spyglass the first blurred sails appear over the horizon, and you wonder: friend or foe? Strong or weak? Do you get closer to investigate, are you keen on capturing and strong enough to risk an engagement? Or do you try to avoid them cause your main goal is to reach your destination safely? In that case: CAN you avoid an encounter? How is the wind, how fast are you and the enemies? Maybe it's better to turn back to get the support of a fort or a friendly ship?</i>
As I said, nothing for people who like fast action. But I like to ponder over tactical decisions, and drawn out pondering in uncertainty is probably an authentic age-of-sail experience <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" />
In the future I'd like to make additional "ship life" events: discipline problems or little accidents that effect your ship or crew. Maybe only as text messages, or as screenshot, or maybe as meeting with NPCs on your deck.
Code structure and interferences
--------------------------------
I'm especially proud on the fact that I haven't changed the existing code, so that there shouldn't be any interferences with existing or future programfunctions. All reload and islandtransfer functions are in a brand new file, cccDirectsail.c . Even the virtual cells and the addition of the new "waypoint" island take place there. So the mod should work with any buildversion, and without initialization.
I only had to add two lines into WhrWeather.c to make a "plug in" that triggers the directsail code:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->
void Whr_UpdateWeather(bool reinit_weather) // NK 04-09-21
{
.....
MoveWeatherToLayers(sNewExecuteLayer, sNewRealizeLayer);
// ccc Nov06 Directsail, hourly trigger placed here for minimum interference
if(!CheckAttribute(worldMap,"islands.Battle_Rocks") ) #include "CCCdirectsail.c"; // includes the code, only once
DirectsailCheck(); // triggers change to other island and new ships
// ccc end
}<!--c2--></div><!--ec2-->I chose that place cause WhrWeather.c is a small file which is not being modded a lot, and the Whr_UpdateWeather function runs only once every gamehour. That should minimize the risk that this mod interferes with anything.
I know, the "proper" place for that codeinclusion would be on top of some rootfile, and the new "island" should be added in islands_init.c . But recently I encountered so much trouble with new mods messing up old mods that avoiding such interference has become the top priority for me. I only wish that if I leave other people's code alone other people will leave my code alone as well <img src="style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid="" border="0" alt="icon_wink.gif" />
Which shall not keep anyone from improving this mod or using it for own projects. Just don't "smuggle" something into the Build behind my back, please <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" />
Testing and Tweaking
----------------------------
I have tested a lot of islandtransfers with Build13 and never encountered any errors. However, this is still an experimental mod, and I can't rule out that it may cause problems sometime somewhere! And it certainly needs tweaking to suit everybody's taste.
Some tweaks are on top of program\cccDirectsail.c :
#define ISLANDSWITCHDISTANCE 5000.0
is the distance from the islandCOAST at which the transfer to the neighbour island starts. The distance of 5000 is aproximately a short while after the old island has disappeared from view. If you want to do more "open sea" sailing increase that value.
#define DIRECTENCOUNTERCHANCE 100
is the chance in percent that a random encounter fleet appears every hour. 100 means EVERY hour some ships appear ahead of you, 0 disables those encounters.
#define DIRECTENCOUNTERDISTANCE 1000
is distance from the player at which those random ships appear.
Another important setting is in InternalSettings.h:
#define TIMESCALAR_SEA 5
That determines the ratio between gametime and real time. If you increase this (I recommend 20 for testing and 10 for playing) the "gameclock" will run faster, so weather and day/night changes will occur more often. As this mod is triggered by those changes random encounters will also appear more often.
Installing and Playing
-----------------------------
Download Directsail.zip from the ccc folder on the Piratesahoy FTP. Unzip it into your PotC folder.
The mod was written for Build13. It will probably also work with B12+New Islands. No new game or initialization is required.
Start any game, go to sea and sail. After some time your lookout will report "Sail Ho!" and new ships will appear ahead of you.
If you want to sail to another island look at the map ( the map PICTURE that you can view in the F2 menu, or printout one of the downloadable maps. Do not go to the toyship map with F3 ). Choose a direction (e.g from Antigua westbound to reach FdF, or northwest to Guadeloupe) and sail away from the current island to that direction. After some GAMEhours (see "Tweaking") your lookout will report "Land Ho!" and the new island will appear ahead of you.
If there are ENEMY ships in the vicinity (a radius of 1000) this will be blocked ! (so that you are not being ripped out of an encounter) Which means you will have to get rid of any pursuers to get to another island.
To make navigation easier I added a positonviewer to console.c. If you press F12 your position in relation to the center of the current island will be displayed.
For the long distances between Oxbay and Redmond, or Muelle and Douwesen I added the "uncharted and deserted" island "Battle Rocks" (cause it's near the battle picture on your map <img src="style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid="" border="0" alt="icon_wink.gif" />). Its only purpose is to be a navigation point.
You can of course go to the toyship map with F3 whenever you want, nothing has been changed there. Though your position may not be where you'd expect it (the conversion still needs finetuning). Simply go to seaview again and back to the map to make any lags disappear.
Still to be done
--------------------
The mentioned tweaking and finetuning should be done after some public testing (feedback welcome <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" /> ), the mentioned "ship life" events are a nicety that can be added later. What currently irks me most is that the reloading upon encountercreation or islandtransfer "reshuffles" the shiptraffic: random ships disappear, and questships and coastal ships are being relocated to their spawnpositions. It would be much better if all ships stayed where they were. That can probably be done by means of the "FreezeLayer" commands that run if you board a ship or go to the menu, but I don't know yet how that works.
Any ideas on that, or on continuous sailing in general, are highly welcome. And if anyone comes up with a better solution for such a feature I'll happily embrace that and drop mine <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" />
Here is an EXPERIMENTAL! mod that COULD one day develop into a publishable PotC add on. But for the time being I only want to exchange ideas and opinions. Cause my idea is surely only one of many possibilities, and together we may be able to develop a better solution.
The problem with sailing from one island to another is that each island is a seperate locationmodel. There exists always only ONE island in seaview. So if we want to sail to another island we must do a reload to another location. All we can do is to mask the trigger and the reload so that the player gets the impression of direct sailing.
The concept
-----------
My solution for that is that I divided the worldmap into virtual cells. Each cell contains one island, and if you reach the edge of the cell (after several GAMEhours of sailing) you are being teleported to the neighbouring cell. The teleport looks a bit different from the usual seareload, and with a bit of goodwill you can imagine that your seaview was only shortly interrupted by the lookouts "Land Ho!" call <img src="style_emoticons/<#EMO_DIR#>/keith.gif" style="vertical-align:middle" emoid="" border="0" alt="keith.gif" />
The islandcell are sort of octagonal, so that you can sail in the eight main compass directions. E.g. if you sail a few hours from Antigua aproximately westbound you'll reach FdF, the northwest sector takes you to Guadeloupe, north to QC, northeast to St Martin. In all other directions you'll get a gentle reminder that there is nothing but open sea <img src="style_emoticons/<#EMO_DIR#>/sailr.gif" style="vertical-align:middle" emoid="" border="0" alt="sailr.gif" />
Accuracy and "realism"
---------------------
That is of course an inaccurate affair and allows only "island hopping" navigation. You can't e.g. sail from Oxbay with a course of 024 degrees magnetic heading and hit Turks port a six days and 21 hours later. Instead you will sail aprox northeast from Oxbay into the new "Battle Rocks" islandcell, from there NE to Hispaniola, then northwards to Turks.
But islandhopping and coasthugging may well have been just what 17th century privateers used as navigation method. Cause navigation in those days WAS actually often a "guess and pray" affair. Charts and instruments were rather inaccurate, winds, drifts and currents unpredictable. Even the most professional naval masters often lost their way or even their ships because they had assumed a totally wrong position.
Not that realism always makes a good game, but I enjoyed to relive the suspense of seeing the last landmark disappear behind me and sailing on through the open sea, hoping that the right landfall would appear ahead.
Avoiding boredom
----------------
Sailing peacefully through the PotC sea may be nice for some time, but gets boring in the long run. So we need events and changes in the scenery to make the continous sailing interesting. We have already the mods for changes in weather & night/day, and the coastal ships. For the sailing AWAY from the coast I added random encounters with small fleets (like the map encounters) that appear ahead of you. That combined with KNB's "inaccurate spyglass" mod let's you experience the problems and decisionmaking of an age-of-sail captain:
<i>Your lookout reports ships at the horizon. In the spyglass the first blurred sails appear over the horizon, and you wonder: friend or foe? Strong or weak? Do you get closer to investigate, are you keen on capturing and strong enough to risk an engagement? Or do you try to avoid them cause your main goal is to reach your destination safely? In that case: CAN you avoid an encounter? How is the wind, how fast are you and the enemies? Maybe it's better to turn back to get the support of a fort or a friendly ship?</i>
As I said, nothing for people who like fast action. But I like to ponder over tactical decisions, and drawn out pondering in uncertainty is probably an authentic age-of-sail experience <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" />
In the future I'd like to make additional "ship life" events: discipline problems or little accidents that effect your ship or crew. Maybe only as text messages, or as screenshot, or maybe as meeting with NPCs on your deck.
Code structure and interferences
--------------------------------
I'm especially proud on the fact that I haven't changed the existing code, so that there shouldn't be any interferences with existing or future programfunctions. All reload and islandtransfer functions are in a brand new file, cccDirectsail.c . Even the virtual cells and the addition of the new "waypoint" island take place there. So the mod should work with any buildversion, and without initialization.
I only had to add two lines into WhrWeather.c to make a "plug in" that triggers the directsail code:
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->
void Whr_UpdateWeather(bool reinit_weather) // NK 04-09-21
{
.....
MoveWeatherToLayers(sNewExecuteLayer, sNewRealizeLayer);
// ccc Nov06 Directsail, hourly trigger placed here for minimum interference
if(!CheckAttribute(worldMap,"islands.Battle_Rocks") ) #include "CCCdirectsail.c"; // includes the code, only once
DirectsailCheck(); // triggers change to other island and new ships
// ccc end
}<!--c2--></div><!--ec2-->I chose that place cause WhrWeather.c is a small file which is not being modded a lot, and the Whr_UpdateWeather function runs only once every gamehour. That should minimize the risk that this mod interferes with anything.
I know, the "proper" place for that codeinclusion would be on top of some rootfile, and the new "island" should be added in islands_init.c . But recently I encountered so much trouble with new mods messing up old mods that avoiding such interference has become the top priority for me. I only wish that if I leave other people's code alone other people will leave my code alone as well <img src="style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid="" border="0" alt="icon_wink.gif" />
Which shall not keep anyone from improving this mod or using it for own projects. Just don't "smuggle" something into the Build behind my back, please <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" />
Testing and Tweaking
----------------------------
I have tested a lot of islandtransfers with Build13 and never encountered any errors. However, this is still an experimental mod, and I can't rule out that it may cause problems sometime somewhere! And it certainly needs tweaking to suit everybody's taste.
Some tweaks are on top of program\cccDirectsail.c :
#define ISLANDSWITCHDISTANCE 5000.0
is the distance from the islandCOAST at which the transfer to the neighbour island starts. The distance of 5000 is aproximately a short while after the old island has disappeared from view. If you want to do more "open sea" sailing increase that value.
#define DIRECTENCOUNTERCHANCE 100
is the chance in percent that a random encounter fleet appears every hour. 100 means EVERY hour some ships appear ahead of you, 0 disables those encounters.
#define DIRECTENCOUNTERDISTANCE 1000
is distance from the player at which those random ships appear.
Another important setting is in InternalSettings.h:
#define TIMESCALAR_SEA 5
That determines the ratio between gametime and real time. If you increase this (I recommend 20 for testing and 10 for playing) the "gameclock" will run faster, so weather and day/night changes will occur more often. As this mod is triggered by those changes random encounters will also appear more often.
Installing and Playing
-----------------------------
Download Directsail.zip from the ccc folder on the Piratesahoy FTP. Unzip it into your PotC folder.
The mod was written for Build13. It will probably also work with B12+New Islands. No new game or initialization is required.
Start any game, go to sea and sail. After some time your lookout will report "Sail Ho!" and new ships will appear ahead of you.
If you want to sail to another island look at the map ( the map PICTURE that you can view in the F2 menu, or printout one of the downloadable maps. Do not go to the toyship map with F3 ). Choose a direction (e.g from Antigua westbound to reach FdF, or northwest to Guadeloupe) and sail away from the current island to that direction. After some GAMEhours (see "Tweaking") your lookout will report "Land Ho!" and the new island will appear ahead of you.
If there are ENEMY ships in the vicinity (a radius of 1000) this will be blocked ! (so that you are not being ripped out of an encounter) Which means you will have to get rid of any pursuers to get to another island.
To make navigation easier I added a positonviewer to console.c. If you press F12 your position in relation to the center of the current island will be displayed.
For the long distances between Oxbay and Redmond, or Muelle and Douwesen I added the "uncharted and deserted" island "Battle Rocks" (cause it's near the battle picture on your map <img src="style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid="" border="0" alt="icon_wink.gif" />). Its only purpose is to be a navigation point.
You can of course go to the toyship map with F3 whenever you want, nothing has been changed there. Though your position may not be where you'd expect it (the conversion still needs finetuning). Simply go to seaview again and back to the map to make any lags disappear.
Still to be done
--------------------
The mentioned tweaking and finetuning should be done after some public testing (feedback welcome <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" /> ), the mentioned "ship life" events are a nicety that can be added later. What currently irks me most is that the reloading upon encountercreation or islandtransfer "reshuffles" the shiptraffic: random ships disappear, and questships and coastal ships are being relocated to their spawnpositions. It would be much better if all ships stayed where they were. That can probably be done by means of the "FreezeLayer" commands that run if you board a ship or go to the menu, but I don't know yet how that works.
Any ideas on that, or on continuous sailing in general, are highly welcome. And if anyone comes up with a better solution for such a feature I'll happily embrace that and drop mine <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid="" border="0" alt="smile.gif" />