fdns / Terasology

Terasology is an open source project started by Benjamin "begla" Glatzel to research procedural terrain generation and efficient rendering techniques in Java using the LWJGL. The engine uses a block-based voxel-like approach as seen in Minecraft. After proving itself as a solid tech demo begla was joined at first by Anton "small-jeeper" Kireev and Rasmus "Cervator" Praestholm and a full-fledged game concept was born. Our goal is a game that pays ample tribute to Minecraft in initial look and origin, but stakes out its own niche by adopting the NPC-helper and caretaker feel from such games as Dwarf Fortress and Dungeon Keeper, while striving for added depth and sophistication in the foundation systems akin to DF.
http://terasology.org/
Apache License 2.0
0 stars 4 forks source link

Terasology

Terasology

Terasology is a game that pays ample tribute to Minecraft in initial look and origin, but stakes out its own niche by aiming for the NPC-helper and caretaker focus from such games as Dwarf Fortress and Dungeon Keeper, while striving for added depth and sophistication.

Terasology is an open source project started by Benjamin "begla" Glatzel to research procedural terrain generation and efficient rendering techniques in Java using the LWJGL. The engine uses a block-based voxel-like approach as seen in Minecraft. You can check out his blog at Moving Blocks!

The creators of Terasology are a diverse mix of software developers, game testers, graphic artists, and musicians. Get involved by checking out our Community Portal, Facebook Page, Twitter, G+, or Reddit

Terasology is licensed under the Apache 2.0 License and available in source code form at GitHub.

Setup

Terasology requires Java 7 or 8, the newer the better - download it here. Also make sure that your graphics card driver is up to date.

For easy setup (recommended) you can use our launcher - download it here which offers different release lines - for instance stable, develop, and legacy

Direct download stable builds are uploaded to our release section here on GitHub while the cutting-edge develop version can be downloaded direct here from our Jenkins

You can use the Windows executable or one of the default launch scripts to start the game. They will setup your Java Virtual Machine to allocate up to 1024 MB of memory. Under Linux and Mac OS X the run script needs the access permission "Execute" to run properly: "chmod +x [scriptname].sh".

The game auto-saves at regular intervals so it is decently crash-hardened at this point (no more playing for 20 minutes then poof lost world via crash). Still no guarantees though! Pre-Alpha :-)

Multiplayer

To name yourself for a multiplayer game use Settings / Player. You can also pick a color, which will affect your placeholder monkey head player avatar.

You can host a local server using the game client and have friends connect to your IP. Game port is 25777 which needs to be open and forwarded to your PC.

Unlike in single player in a multiplayer setting permissions are enforced for console commands. Several permission types are available, if a command is not allowed it will state which permission is missing.

You can also run a headless server, but this is harder to configure at the moment. You need to launch the game via command line, for example with a downloaded version:

Note: This changed to include the /libs after stable 49. The name of the .exe also may differ

java -jar libs/Terasology.jar -headless -homedir=server

This will launch the server and store game files in the "server" subdir at the place you launch from (otherwise it'll use the default path, which could clash with a client on the same system). You can add -serverPort=##### to run on a different port than default 25777.

In this case there is no default player with rights beyond "chat". You need to gain admin powers yourself using the oneTimeAuthorizationKey that generates in the server's config.cfg. This gives you all permission types except "debug"

Join the server and run the console command usePermissionKey <key> where you replace <key> with the value from the server's config file. This only works once.

After you have rights to manage user permissions you can grant other players specific permissions by executing givePermission <player> <permission> in the console, replacing <player> with the desired player's name (case sensitive).

With server rights you can terminate the server gracefully via shutdownServer in the console. Otherwise you can kill a headless server with CTRL-C in a terminal / command prompt. Running headless with the .exe on Windows is not recommended as it "detaches" from its command prompt so you get no handy logging there or any way to issue a break to the process. If you cannot connect or get "op" you may have to terminate the process manually via Task Manager or comparable.

Finally to get modules configured for a headless server you either have to manually edit in a list of modules to the defaultModSelection section, and defaultGenerator for your chosen world, then delete the saves dir for the server and restart it. Start a single player world and look at the config.cfg that generates for hints.

Alternatively you can run from source and supply parameters for game configuration. For instance here is how you would launch with ThroughoutTheAges active, our most complete setting. Keep in mind the module list may change any day, check in the game client what modules highlight with TTA selected to confirm.

gradlew -PworldGen="WoodAndStone:throughoutTheAges" -PextraModules="AlterationEffects,AnotherWorld,ClimateConditions,CopperAndBronze,Core,Crops,Fences,Fluid,Genome,GrowingFlora,Hunger,Journal,MarkovChains,MultiBlock,PlantPack,NameGenerator,Seasons,StructuralResources,ThroughoutTheAges,WoodAndStone,Workstation" startServer

This will all become easier as the project and especially the launcher mature further :-)

Controls

Note: Keys between the latest stable and latest develop build may differ.

Debug Features

Only works when the F3 debug mode is enabled (and may come and go)

Tools

May vary by version and based on what modules are enabled

More or completely alternative line-ups with certain modules / world types selected

Console Commands

Press the grave key (usually the ` key immediately above tab) to show the in-game console. Mostly everything is case insensitive. Copy paste is supported and up/down arrow will cycle through commands you've used before. Hitting tab with a partially typed command will auto-complete it (including abbreviated camel case like lS for listShapes). For partial commands with multiple completion candidates you can tab again to cycle through them.

Building and running from source

Run any commands in the project root directory

You may also need to tweak IDE settings further for your convenience, in particular for Eclipse. See Dev Setup in our wiki for more details.

Note that by default stored data (config, saves, etc) is sent to a user profile directory like Saved Games under Windows. Add -homedir to a run configuration or command line execution to use the project dir instead (this is done automatically in some cases including IntelliJ and gradlew run)

If you want to pull down the source code for a module you can easily do so via Gradle:

This fetches the module source for the "Sample" module and the second command fetches any dependencies and updates the IntelliJ project structure so you can see it as a module. Likewise for Eclipse or any other setup you should run any one gradlew command to make sure the new module's dependencies have been fetched as well. See Codebase Structure in the wiki for more.

Build Status Dependency Status

Modules

Content, gameplay mechanics, and mostly everything other than the engine that allows the game to run is stored in what we call "modules" which are similar to the traditional meaning of "mods" but intended to be smaller building blocks you'd normally put several of together to make one traditional "mod".

Modules must be enabled during world creation by selecting them using the "Modules" button. Some world generator types may be registered by a module and auto-select that and maybe other modules if you choose that world type. Modules may also enable additional console commands (listed by the "help" command when active).

As opposed to engine level projects listed under https://github.com/MovingBlocks all modules are listed under a different GitHub organization at https://github.com/Terasology

Here's a list of modules bundled with the game by default (as of this writing anyway - this line-up will change now and then). It should roughly match this category in Jenkins: http://jenkins.terasology.org/view/Modules and you can download updated modules from there if needed.

Some of the modules in action:

Terasology

Credits

This is an incomplete list and the team is constantly growing.

Apologies in advance for any omissions, contact Cervator on the forum if you believe you've been missed :-)

Contributors

(Listed by primary team)

Soundtrack and Sound Effects

Additional Notes

Terasology's base graphics use the awesome Good Morning Craft! texture pack by Louis Durrant. Make sure to visit his homepage and support his work.

Our default font is "Noto" by Google, which is released under the Apache 2.0 License just like Terasology.