Monday, August 31, 2015

Intro to GeoCraft (0.1.0)

What is GeoCraft?  

Current IP: 52.22.8.75
GeoCraft is a combination of a mod suite, a custom map, and an official server.   This combination is tuned for "civilization" or "politics and economy" style play; in other words, it's been tuned to incentivize group-play and town-building.

The main philosophy of GeoCraft is to accomplish its gameplay goals without arbitrary or direct game constraints.  We aim to design bottom-up from the level of basic incentives, rather than mandating player interactions top-down through mechanics.

GeoCraft is a two-phase project: in early development, it will be a rapid iteration test server.  After the project has been sufficiently developed, it will move to longer cycles so that communities have a long while to spring up, develop, thrive, and compete.  Its main goal is to be both a game and a social experiment -- a test-bed for styles of group-play in which economic incentives are a bit more realistic than vanilla Minecraft.

In-house mods and features

Mood mechanics
Mood is a new meter to manage, much like HP or stamina. It can be viewed by punching with an empty hand at air.  Mood is whole number between 0 and 100 (worst and best), and is consumed by two events currently: (1) when destroying a block; (2) when taking hunger damage.

Mood can be recovered by resting in a bed.

Mood affects crafting durability; it adjusts durability by its own number, as a %.  Thus if you have 50 mood, all tools and armor you craft will be at 50% durability.

Encumbrance mechanics
GeoCraft has harsh encumbrance mechanics. This is both to encourage working together (making hauling more of a distinct task) and to encourage capital investment (chest mules, minecarts, etc).

Different materials have different weights.  Once encumbered, a player cannot move until unencumbered.

Using "/lug", the player can toggle whether or not blocks are picked up at all (such as to avoid encumbrance altogether when fighting, for instance). 

Lockable chests and doors
GeoCraft has mechanics for locking chests and doors.  Rather than using scripting commands, the system is combination based.

To set a lock, approach an unlocked chest (or door).  Clear the 2nd and 3rd rows of your inventory.  These two rows will be used to set the combination for the lock.

To determine the combination to be set, place any combination of items in the 2nd and 3rd rows of your inventory like so:


Now, whenever this combination of items is in the 2nd and 3rd slots of your inventory, you will have access to the locked chest.  This is true for anybody!  So you can share the combination with others, but be careful who you share it with (there is no explicit white or black listing).

One can hold multiple combinations at once; empty spots don't count.  Suppose I form a second lock with the following combination:


I can then hold both keys at the same time and access either chest.


Keep in mind that the number in the stack matters!  This means that the following inventory would NOT open the locks depicted by the seed-based combinations above:



Imprisonment and player-versus-player enforcement 
Social life sometimes requires enforcement. To give players this option, GeoCraft has imprisonment mechanics.

To imprison another player, place a cobblestone fence down.  Holding a stick, right click that fencepost.  A message should alert you that you are ready to use that post as a "prison post".

Upon your next player kill, that player will be teleported to the prison post and bound to it until the post is broken by another player. 

Durable materials
Many materials will require multiple breaks before they are destroyed and drop.  Construction-grade materials are intended to give defenders an advantage against petty grief and small-time vandalism.  If these blocks are not broken in the course of a day (before server restart) they must be broken all over again; their "hp" so to speak is restored.

Semi-sustainable ore veins
On GeoCraft, all ore veins peek out a bit at the top. This means that prospecting can be done by exploring the map.

Ore blocks can be broken many times, and yield a drop each time.  (To balance this, ore blocks cannot be placed.)  Once per day, if they reach a pseudorandom number of breaks, ore blocks break for good.  Thus, if managed carefully, ore veins are stable.  If not, they will dwindle and be depleted.

Farming, animals, and desertification
Farming now has a chance of causing desertification -- the tile's biome itself changes to desert.  Desert tiles cannot grow grass, or anything else for that matter.

The only way to restore desert biomes to their original biome is:
  1. when a sheep eats grass within one block
  2. when a cow or pig is fed within one block 
Hunger depletes more rapidly, making these constraints more of an issue.

Third-party mods and features

WorldBorder
WorldBorder is used with a hard-wall placed around Crater Lake.  The total area of playable surface is currently 1km x 1km.

Random_Spawn
Random_Spawn is configured so that players spawn in a random 800 x 800 meter area if a bed is not set.

Rules and code of conduct

GeoCraft is an in-game anarchy server.  This doesn't mean there are no rules on the server; it means that people can play the game however they like.  "Play", as in any game, is defined carefully such as to create a personally safe environment for all players.  PVP is absolutely allowed, but people are not allowed to engage in verbal and/or personal attacks on fellow PLAYERS (that is, the humans behind the avatar) in any way.  This includes name calling, disrespecting another player's gender or race, and other abusive behavior. Basically anything you'd be ashamed to tell your own mother about having said or done to another human being.

This line is tread on almost every server, where bad apples try to intimidate and threaten each others' persons to gain an advantage on the game board.  GeoCraft takes the notion of "on board" play very seriously.  To illustrate the difference: griefing a person every single day is perfectly fine (it is all "on board"). Launching a personal and verbal invective about that person outside of the context of the game (attacking who they are, where they're from, etc) is completely out of bounds.

In chess it's not appropriate to flip the board, intimidate, or harass one's opponent.  This is not just for the sake of common decency and respecting others, either; without this guarantee, the boundaries of the game itself become fuzzy ("let the wookie win!").

The rules of conduct are remarkably simple: do not harass, intimidate, or otherwise personally attack other players.  Any actions directed at one another out of game (this includes directly addressing the player in any threatening or aggressive tone) are grounds for a temporary or permanent ban at my discretion.  Keep all play on board.  Anybody seen trying to make the space uncomfortable for other players on a personal level will be subject to disciplinary action or outright removal.

Working on LockMod today!

The last few days we've seen the addition of animal and soil-fertilization mechanics. I will be posting soon to outline the intended mechanics of these additions for testing.

There are really 2 different things we need in place before we have any business advertising the server:
  1. Provide some sort of locking mechanism for chests and doors
  2. Some sort of imprisonment mechanic
Today I am focusing primarily on #1.  More on this throughout the day, but the basic gist of the mod is to provide a combination-lock system based on inventory contents.  Trying my best to think out a system that has fewer computational costs than traditional lock/key mods and also brings extra value and richness to the game (rather than relying on too much off-the-board mechanics, background databases, etc).

Friday, August 28, 2015

NOTICE: NEW IP ADDRESS! 52.22.32.162

Folks the server has a new IP address due to upgrading to a new AMI: 52.22.32.162

Once I decide on more than a working name for this project I'll bite the bullet and get an actual domain so that we don't have to constantly communicate new IP info when the machines get upgraded.

New rock strata delayed a bit

So last night I tried fooling with the stone distribution, replacing bits and pieces with rock strata.  For some reason similar code to what I used for the ore vein generation did not work in this case, and I kept getting strange issues.  Perhaps it's because of the nature of trying to iterate through the whole map (I've seen the changes take some times and not others; very odd).

At any rate this can be achieved in a much less fancy manner via MCEdit so I'm going to wait and use that instead.  Tomorrow I'll be getting around to working on the animal and farming mods, and hopefully slating the lock/key mechanisms.

NEW IP ADDRESS OF SERVER: 52.22.32.162

Server down for an hour or two

Server undergoing maintenance.  Layering some rock strata into the map.  Script is currently running and should be done in a few hours at most.

Fixed a few bugs

  1.  Fixed issue with dyes coming out strange, and wood coming out strange (ink sacks / oak planks). Now mood only applies to items with explicit durability (damage value is used differently for non-equipment). 
  2.  Adjusted the LugMod weighting algorithm so now it keys off of the master spreadsheet (making balancing easier) with full coverage of Bukkit materials.
Please keep me honest and see if the ink sack issue has gone away.  

Thursday, August 27, 2015

LugMod overhauled!

LugMod has been reworked due to some unexpected dead-ends with the original implementation plans.  Here's how it works:


Each player has two different flags which can be set to TRUE or FALSE.  The first is the "encumbrance" flag -- if the player is encumbered, the server sets this flag for them.  The second is the "lug" flag -- this is set by the player using "/lug on" and "/lug off", and viewed with "/lug".  When the lug flag is TRUE, players can pick up items (when not encumbered).  When FALSE, players do not pick up items (passing them over) such as to make the encumbrance mechanics less obtrusive if you do not intend to haul there and then.

When a player is encumbered, they are locked in place. This is accomplished by teleporting the player back to the location of initial encumbrance if they move.  When encumbered, the mod automatically switches the player's lug flag to FALSE; this is so that the player can clear her inventory without it immediately filling back up to encumbrance automatically.

Players will, be default, be able to pick up one stack of items that places them above encumbrance.  This is to ensure that any size stack that fits into a chest-slot can be lifted and restored in the event of chest destruction (or any other way by which it ends up on the ground), addressing the bug where players could not lift stacks heavier than their encumbrance threshold.

Wednesday, August 26, 2015

Temporarily disabled "Encumbered!" message

Quick patch (up to 0.0.2 technically, yay for artificial versioning milestones!):

LugMod's notifications to the player that they are encumbered have been temporarily switched off.  The somewhat basic mechanism I have set up for alpha 1 was spamming players with "Encumbered!" messages and blowing out the chat window.  As a quick fix I have removed this notification.  More intelligent encumbrance checking is on the radar and slated for 0.1.1.

Fixed craftbukkit running in background, now server should be up indefinitely

CraftBukkit has strange issues running as a background process compared to other programs (such as the vanilla Minecraft server).  Today I found the magic command to get it running in the background and have confirmed: even if I log out of my ssh connection through which I launched CraftBukkit, the server stays online!  Now, so long as the EC2 instance it's running on is up (and Amazon itself has an internet connection) the server will be up!

Next up in terms of server-side utilities to improve service and automated administration: going to see if I can get a script going to detect the instance itself going down, so that it can spin up a new version of itself in an emergency (before alerting me of course).

EDIT: In case you're a poor soul that somehow ended up here searching for the same problem, here's a link to what resolved the issue for me.

Tuesday, August 25, 2015

Intended mod mechanics for 0.0.1 (current release)

Below are the intended mod mechanics and feature list for 0.0.1, which is the current release being tested.  Thanks for your bug tickets so far on the previous post!  Please, from now on, post your tickets and bug reports underneath this post.  From now on, I will be posting a feature list alongside a new push/release; this will allow the intended feature list to head up the bug reports and will allow everything to stay neat and tidy.

Again: this post is to aid the testing process, in comparing intended functionality for the current/live release and the actual functionality (which hopefully you testers will discover!).

MoodyMod 
MoodyMod introduces the concept of mood.  Mood is a whole number between 0 (worst mood) and 100 (best mood).  As you may expect, mood is meant to represent your avatar's mental and emotional well-being.

What does mood affect?
Currently mood is meant to affect crafting durability.  As it stands, it only affects the durability of tools: it is meant to adjust the durability of any tool crafted by <current-mood>%.

Example: if your mood is 50 and you craft a stone pick, that stone pick should start with 50% durability.

What actions decrease my mood?
Breaking a block consumes 1 mood. Currently nothing else should consume mood.

How do I restore my mood?
Only one action should restore your mood: sleeping in a bed. Sleeping should restore mood to 100.

How do I check my mood?
To check your mood, punch at the air with an empty hand.

LugMod
LugMod adds basic encumbrance mechanics.  Once a certain weight max is hit, the player will simply not be able to pick up any more items.  Different items have different weights.

How is encumbrance calculated? What happens when I'm encumbered?
There is a basic lookup table where every item is assigned a weight. When a player attempts to pick something up, the current weight of their pack is calculated; if this is above a maximum threshold, the pickup event is canceled and the item remains where it began.


BreakMod
BreakMod adds in multi-break mechanics to blocks.  Blocks that require multiple breaks are either construction grade or ores.  Construction grade materials break many times and only yield their drops on the final break.  Ores, on the other hand, yield their drops on every break.  Some blocks are normal (e.g. dirt) and require no additional breaks to destroy.


Each multi-break block has a minimum and maximum number of breaks that it may take; however many it actually takes is based on a bit of chance (calculated at every server-up).  If a block is not completely destroyed before server reboot, that block is reset; it will have to be broken from scratch. 

Why regenerate blocks on server reset?

  1. It makes attacking and griefing harder. If one could sneakily break into a place by chipping in gradually, it would incentivize annoying and not-fun behavior such as checking one's entire property every day.  This way in order to break in, one needs to be dedicated and able to follow through in a reasonable amount of time.
  2. Ores cannot be placed. This means when they are destroyed, that ore cannot be regenerated in the world again (the world becomes a bit poorer overall).  Since they regenerate day to day and there's a bit of uncertainty as to how many breaks before they are totally gone, this gives towns something to regulate (behavior with respect to ore such as to not totally wipe it out).  Towns and settlements that are able to preserve their ore deposits day to day can continue to exploit them, and stay set up above them.  This encourages city building in a natural way.

Mods rely on data tables that need to be published 
The actual weightings I have not included in this document. Once I find an easy and concise way to publish this sort of information, I will start including it in these release/feature posts so it can be checked against.  For now I trust people to be able to discover the counts as they go.

Happy hunting for bugs folks, and have fun! Thanks for helping with the testing. If there's anything I can do to improve the server experience, please let me know.  Also: in addition to bug reports, post lag reports here.

NOTE ON VERSIONING:
x.y.z denotes <map_reset_number, major_mod_revision_number, minor_mod_tweak_number> 
 

Auto Backups, NoCheatPlus, and RandomSpawn

Today I got the server backing up to S3 Cloud storage on an hourly basis. That means rollbacks should, at worst, only ever be one-hour back (assuming the corruption occurs alongside an error that crashes the server).  It also means we'll be able to download these hourly snapshots later and do a neat frame-by-frame render or other sorts of detailed data analysis.

Also, I downloaded and configured NoCheatPlus (default settings) and RandomSpawn (set to a 800x800 square around 0,0).  Please let me know how these work out.  Server is currently up and running these as of this post.

Server accidentally generated new map!

Upshot: I have restored the Crater Lake variant map. Some of the progress on the generated map will be lost.

What happened?: For some reason the server.properties file went back to reading "world" instead of "craterlake". I have fixed the issue and updated the AMI accordingly so next launch this shouldn't happen.

First server stability test! Stable DNS

CURRENT DNS: ec2-52-21-140-61.compute-1.amazonaws.com

(If you're experiencing problems make sure you didn't copy an "http" or a space at the beginning or end of DNS.)

Folks:

Working on getting a domain name so that whatever public DNS the server is assigned in the future, I can point the easy-to-remember domain name to it.  I may even be able to work it out so that the server auto-reboots (or auto-respools in the case of termination) and auto-links the public DNS to the appropriate domain name! Stay posted, going to fool with that today.

The DNS posted above should be stable until the first server-down.  Will post subsequent ones to THIS THREAD if it changes.

Tuesday, August 18, 2015

Launch of 0.0.1!

The purpose of this blog is to replace a forum environment for GeoCraft Minecraft mod and the official server's community.  The format, I hope, will be as follows: I post some sort of relevant topic based on recent news, or soliciting regular feedback.  The comment section will then serve as a forum for response and discussion for the community.

Today we launched 0.0.1!  It's an exciting day ... I banged the alpha 1 version of the beginning set of mods out today, got basic tests done, and now we have two testers online.  I will be posting a full feature list in a post soon.  As it stands I'm ridiculously tired and wanted to fire off this post to establish the whole solicitation-response model, and get some of the first impressions and basic feedback on tuning the early alpha out there.

Testers: please reply directly to this post with any feedback you have, positive or negative.  We need tons of criticism to get this tweaked up, to get new features dreamed up, and to remove annoying or kludgy ones that are in the way.

ALSO! It's very important I give credit where it's due.  We are using (at least for now) variants of the Crater Lake map by Sir Beret.  Amazing map; all credit goes to him.