Wayfar 1444 is a text based online multiplayer game. You are a colonist, sent to the surface of an alien world with a few basic supplies. Join up with other colonists, or plot against them, while surviving and building a self sufficient colony.
Monday, June 28, 2021
Monday, April 26, 2021
April updates
- Website is back online with working biome readouts: http://wayfar1444.com
- Basic improvements to civilian AI (they won't freak out as much)
- Slightly faster robot assistance times
- About 6 new craftable and hackable items
- New solar system: Meglo-1189
- Various bug and exploit fixes, noted on *clp in-game
Friday, March 12, 2021
Upcoming changes for Wayfar 1444
First of all, thanks to several player reports and some light weight stress testing of the MOO, several critical and annoying bugs have been fixed (some of them very longstanding).
Here are the priorities for Wayfar 1444 development going forward:
- Lag issues - due to room spawning, there is a lag spike every hour as the room spawning system cleans up rooms. This will be replaced with an instanced room design.
- Civilian AI - civilians are a little wierd in how they respond to events, and not as useful as they could be.
- Finish the psyker background and release it.
- Black market review and fixes - black markets spawn on planets and sell unique, limited edition goods.
- Pirate outpost and base review and fixes.
- Website relaunch!
Beyond that, there is a steady stream of bugs to be fixed, as well as more minor features to be added, like new hackable items, starship improvements, additional perlin noise generation improvements and more.
Love,
el management
Friday, February 26, 2021
Wayfar 1444 is open for new and former players
Server has been up and running well, and email is back online.
Address: wayfar1444.com
Port: 7777
If you have an old account with a valid email, you can reset your password if you've forgotten it. For any problems, contact admin@wayfar1444.com - registration emails should arrive within a few minutes. More details on future updates to the MOO and the website will be posted sometime next week.
Saturday, February 20, 2021
Wayfar 1444 - new announcement coming soon!
Wayfar 1444 will be back online in a limited capacity starting the week of 3/01/21. Connection information will be posted on this blog and emailed to previously registered players.
Love,
El Management
Monday, October 17, 2016
Wayfar 1444 will suspend service as of 11/10/16
Love, El Management
Sunday, October 16, 2016
Tutorial: Exporting JSON from Hellcore for use with jquery Datatables
You will need jquery and datatables, which can be downloaded to your local folders. These will be included in our PHP pages later. Let's say we want to display all weapons, here is the template (HTML or PHP). You must replace $weapons_db with the actual OBJNUM of your weapons database:
| ID | Name |
|---|
Query.php is a PHP file that queries the MOO server on port 8080. This is already setup by default in hellcore, but you need some modifications, firstly to $json_utils:_www
$json_utils:"_www _html" this none this
try
wargs = $su:explode(args[1], "/");
if (length(wargs) > 1)
item = toobj(wargs[2]);
if (gamevalid(item))
data = item:_json();
return {data};
endif
endif
except e (ANY)
$rpg:report_error(e);
return pass(@args);
endtry
return pass(@args);
This changes the $json_utils:_www verb to accept an additional objects. Now let's make query.php:
* Step 3:
Now - our desired_objectnumber must have _json verb, and it must return formatted json (not HTML). Note that the data is structed very specifically to comply with jquery datatables. Example:
$weapons:_json
w = $ou:fertile_branches($weapon);
data = [];
data = ["data" -> {}];
for x in (w)
id = tostr(x)[2..$];
d = data["data"];
d = setadd(d, {id, x:name()});
data["data"] = d;
yield;
endfor
return $json_utils:encode(data);
* Step 4: Getting JSON from our MOO server
http://yourdomain.com:8080/query.php?objid=$weapons
Will now return JSON output, something like this (partial):
*Step 5: Security
Use iptables to ONLY allow requests to query.php, and yourdomain.com:8080 from your own domain. Google this!
Questions? Comments?
Post them below!
Monday, October 10, 2016
Transition to Amazon managed DNS
First step - the easy part:
Import your zone file into Route 53 Amazon. It costs about a dollar a month.
Hard part: you have a second server that you'd like to modify and upgrade before fully moving to it as your primary server.
Step 1: http://cobus.io/linux/2015/02/17/route-53-dns-update-script.html
Get these scripts installed and configure not just the DNS (test.wayfar1444.com for instance), but also a user (updateip or dyndns) with the appropriate permissions. Run the updateip script to make sure that your changes are reflected in the amazon dashboard.
Once you've confirmed that the changes are actually taking effect, use crontab to add this to your server and keep amazon's DNS service updated with your actual IP by calling crontab -e:
*/30 * * * * /home/wayfar/www/updateip.sh YOURHOSTEDZONEHERE your-iam-user your-domain.com
Thursday, February 11, 2016
2/11/16 Update - New map draw and room movement system
Friday, January 22, 2016
Adding 2d Perlin Noise to Hellcore/LambdaMOO
static int p[512];
static int permutation[] = { 151,160,137,91,90,15,
131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,
21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,
35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,
74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,
230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,
80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,
164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,
118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,
183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,
172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,
218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,
145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,
115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,
141,128,195,78,66,215,61,156,180
};
/* Function declarations */
double fade(double t);
double lerp(double t, double a, double b);
double grad(int hash, double x, double y, double z);
void init_noise();
double pnoise(double x, double y, double z);
void init_noise()
{
int i;
for(i = 0; i < 256 ; i++)
p[256+i] = p[i] = permutation[i];
}
double pnoise(double x, double y, double z)
{
int X = (int)floor(x) & 255, /* FIND UNIT CUBE THAT */
Y = (int)floor(y) & 255, /* CONTAINS POINT. */
Z = (int)floor(z) & 255;
x -= floor(x); /* FIND RELATIVE X,Y,Z */
y -= floor(y); /* OF POINT IN CUBE. */
z -= floor(z);
double u = fade(x), /* COMPUTE FADE CURVES */
v = fade(y), /* FOR EACH OF X,Y,Z. */
w = fade(z);
int A = p[X]+Y,
AA = p[A]+Z,
AB = p[A+1]+Z, /* HASH COORDINATES OF */
B = p[X+1]+Y,
BA = p[B]+Z,
BB = p[B+1]+Z; /* THE 8 CUBE CORNERS, */
return lerp(w,lerp(v,lerp(u, grad(p[AA ], x, y, z), /* AND ADD */
grad(p[BA ], x-1, y, z)), /* BLENDED */
lerp(u, grad(p[AB ], x, y-1, z), /* RESULTS */
grad(p[BB ], x-1, y-1, z))), /* FROM 8 */
lerp(v, lerp(u, grad(p[AA+1], x, y, z-1 ),/* CORNERS */
grad(p[BA+1], x-1, y, z-1)), /* OF CUBE */
lerp(u, grad(p[AB+1], x, y-1, z-1),
grad(p[BB+1], x-1, y-1, z-1))));
}
double fade(double t){ return t * t * t * (t * (t * 6 - 15) + 10); }
double lerp(double t, double a, double b){ return a + t * (b - a); }
double grad(int hash, double x, double y, double z)
{
int h = hash & 15; /* CONVERT LO 4 BITS OF HASH CODE */
double u = h < 8 ? x : y, /* INTO 12 GRADIENT DIRECTIONS. */
v = h < 4 ? y : h==12||h==14 ? x : z;
return ((h&1) == 0 ? u : -u) + ((h&2) == 0 ? v : -v);
}
int noise2d(int x, int y, double scalex, double scaley, int size) {
double xf = (double)x;
double yf = (double)y;
double sizef = (double)size;
double noiseval = pnoise(xf/(sizef * scalex), yf/(sizef * scaley), 0.5);
noiseval = sizef * ((noiseval + 1.0)/2.0);
return (int)noiseval;
}
int fbm2d(int x, int y, double scalex, double scaley, int size, int octaves)
double xf = (double)x;
double yf = (double)y;
double sizef = (double)size;
double noiseval = 0.0;
int i;
for(i = 1; i <= octaves; i++) {
double n = pnoise(i * xf/(sizef * scalex), i * yf/(sizef * scaley), 0.5);
n = sizef * ((n/2.0) + 0.5);
noiseval = noiseval + n / (double)i;
}
return (int)noiseval;
}
static package bf_perlin_2d(Var arglist, Byte next, void *vdata, Objid progr)
{
Var r;
int x = (int)arglist.v.list[1].v.num;
int y = (int)arglist.v.list[2].v.num;
double alpha = *arglist.v.list[3].v.fnum;
double beta = *arglist.v.list[4].v.fnum;
int n = (int)arglist.v.list[5].v.num;
int octaves = (int)arglist.v.list[6].v.num;
init_noise();
r.v.num = (int)fbm2d(x, y, alpha, beta, n, octaves);
r.type = TYPE_INT;
free_var(arglist);
return make_var_pack(r);
}
Add to void register_extensions() in extensions.c:
register_function("perlin_2d", 6, 6, bf_perlin_2d, TYPE_INT,
TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_INT, TYPE_INT);
How to use:
you have a list of biomes or room types. You get a size from this and then
call this function:
biomes = {"flatland","forest","mountain"};
size = length(biomes);
px = 10;
py = 33;
alpha = 1.0;
beta = 1.5;
octaves = 1;
index = perlin_2d(px, py, alpha, beta, size, octaves);
alpha, and beta are floats that affect the jagged/smoothness of the generated area. octaves runs the noise function multiple times - WARNING - if you have a set number, for instance when selecting a list of biomes, this will cause values to fall outside the range of the list you've created. For instance using multiple octaves with the list of 3 biomes above would result in many values at x, y co-ordinates of 4-8. If you're using the noise to set altitude, you may wish to use the octave setting.
If you want to generate an entire map you would call this function repeatedly over the size of your map. Or, more usefully, you call it when a specific co-ordinate is needed. As long as the input to perlin_2d is the same, the index return will always be the same.
Thursday, January 21, 2016
Wayfar 1444 2016 Status & Roadmap
Goals for 2016:
* bio engineering - the ability to harvest DNA and spines from wildlife to create your own tameable creatures
* overhaul of planet generation systems and increase from 4 solar systems to 20
* freak background - inspired by firefly, you have weird psychic powers and must remove them before law enforcement puts you into a containment facility
* there will be a galaxy and player reset, announced well in advance
* more options during character generation, including the ability to start with unique to background items and more paths to explore when creating a character
* starship improvements, including untamed solar systems for adventuring in
* general AI improvements and fixes
* more orbital and solar mechanics - from new solar objects for players to craft, to new options for boarding enemy ships or disabling them
*
Possibly but Unlikely Goals:
* sector defense/ alien invasions
* mushclient plugin for an MMO type gameplay experience
Sunday, November 29, 2015
Compiling Hellcore on a CentOS 64-bit System
Move the hellcore.tar.gz to the home directory of your user. Extract it into a subfolder, called moo or something. Run this command: tar -xvzf hellcore1104.tar.gz
This will unzip the hellcore. Change directory to the src directory.
Now, setup your 64 bit system to actually be able to compile this beast:
sudo yum install bison
sudo yum -y install glibc.i686
sudo yum install libstdc++.i686
sudo yum install screen
In the src directory run these commands:
make clean
make
If you get no "exited with error" message at the end, success, you have won and can now retire. Make sure gperf and your restart.sh are set to executable!
To start the moo:
screen ./restart hellcore 7777
CTRL+A+D
Now you can return to view the screen with screen -r. If you need to emergency shutdown the MOO, you can resume the screen and press CTRL+C - this will immediately dump everything to hellcore.db.panic! Handy!
Friday, November 6, 2015
Travel redesign!
Thursday, November 5, 2015
New scavenger objective for points of interest on planets
Wednesday, November 4, 2015
Wayfar 1444 Vehicle Design Contest
Wayfar 1444 Vehicle Design Contest
What is is: Wayfar features vehicles, aircraft, and spacecraft. This contest is seeking cool science fiction vehicles and aircraft concepts.
The game:
Server: wayfar1444.com
Port: 7777
Use your favorite client, or the flashclient at http://wayfar1444.com/flashclient
You can see a list of existing vehicles in game on this page here: http://wayfar1444.com/index.php?page...item&item=8864
The Prizes:
Any one that submits a readable design will receive a unique journal reward on Wayfar! The selected winner will have their vehicle implemented in game, AND receive a copy of that vehicle fully loaded with modules, weaponry, and even a custom paint job!
Here is a template of the information that would help us implement your idea:
Name: Pretty obvious
Description: This is the detailed description someone would see when looking at the vehicle. It should be thematic and as far as possible in good english, although we'll be happy to help with that.
Look Place Message: This is the "short description" displayed when seeing the vehicle in a room, hangar, or zipping through the area. It's generally in the format of: "A skyspeeder is idling here.
Layout: Vehicles must have at least one interior room, where the cockpit is. A larger vehicle might have several, and each one may have some purpose or description associated with it. A luxury airbarge might have something like a dining room fully outfitted with tables, chairs, and maybe even robot servitors.
Special functions or abilities: Can this vehicle do tricks? It's a jetbike that can lean sideways at perilous speeds? Describe the abilities, including how the player might activate them and what messages the player and other players present would see. Include interior messages as well - if the pilot of the luxury barge makes a hard turn, the diners in the first class carriage should notice some plates rattling.
Vehicles that are aircraft can also fly, increasing and decreasing altitude (useful for avoiding ground based weapons fire). Vehicles and aircraft can have different speeds and controls for adjust that speed.
Special Messages:
There are many messages a vehicle uses when launching, driving, etc. Provide messages you'd like to see and we can fit them into the game.
Loadout: Vehicles in Wayfar can be equipped with modules, such as locks, weapons, intruder detection systems, etc. Should the vehicle be able to mount a rat-class gatling gun? A medium laser? Several missile racks? Or comfortable sleeping pods? You can refernce existing weapon modules in the game, or describe new ones in as much detail as you see fit.
To submit your creation:
Using the template above, please EMAIL your vehicle idea to admin@wayfar1444.com - you can also submit your idea in game but an email is probably the most effective way to get the information across in a nicely readable format.
You are encouraged to use inspiration from science fiction that doesn't involve any outright copyright violations!
The contest deadline is DECEMBER 12TH! Prizes will be awarded by the first week of January.
Tuesday, November 3, 2015
Proper use of hashes in Hellcore
Solution: Do not assign hashes to variables. Do not assign the results of keys() or values() to variables.
Wrong code:
rkeys = keys($ods.bigkeyhash);
for x in (rkeys)
"something something";
endfor
Correct code:
for x in (keys($ods.bigkeyhash))
"something something";
endfor
Hash Warnings:
The following are things to avoid when using hashes in hellcore. Using these codes can crash the entire MOO and even induce data corruption (this is really bad!).
Do not iterate directly through a hash:
Wrong:
for x in (somehash)
Correct:
for x in (keys(somehash))
Do not modify values while iterating through a hash (guaranteed crash):
Wrong:
for x in (somehash)
somehash[x] = newvalue;
endfor
Correct:
for x in (keys(somehash))
somehash[x] = newvalue;
endfor
These are covered in the HELP HASHES programmer help, but are included here for reference.
Wednesday, September 30, 2015
Introducing a friend to wayfar
Well first of all we had to get rid of the current captain:
Hey no problem! Let's head on into civilized space, forgetting that we're driving around a pirate ship:
End result:
Saturday, September 12, 2015
Revamped character creation preview (updated 9/29/15)
Next, based on your passenger class you enter the ship in a varying area (for instance passengers are in a cabin, unticketed lowlives are in a vent):
Once you've made a choice of starting background, it's off to the races! Did I say races? I meant dropping to the surface in a cramped emergency pod:
A variety of other players, items, vehicles, and potentially hungry wildlife will be happy to welcome you to your new planet. Thank you for signing both your colonial agreement, and the non disclosure form provided at the beginning of your voyage.
Best regards,
The Central Administrative Complex
Wednesday, September 9, 2015
The return of bat-wing scanjets
This early item has finally been modernized and updated.
New gadget display:












