From a039d981ac96be0fd1b48069d32865a35cf26e8b Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Fri, 18 Aug 2017 09:47:40 +0100 Subject: Change README to Markdown format, add LICENSE.txt (#6244) --- README.md | 417 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 417 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 000000000..ecacbbd8a --- /dev/null +++ b/README.md @@ -0,0 +1,417 @@ +Minetest +======== + +[![Build Status](https://travis-ci.org/minetest/minetest.svg?branch=master)](https://travis-ci.org/minetest/minetest) +[![Translation status](https://hosted.weblate.org/widgets/minetest/-/svg-badge.svg)](https://hosted.weblate.org/engage/minetest/?utm_source=widget) +[![License](https://img.shields.io/badge/license-LGPLv2.1%2B-blue.svg)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) + +An InfiniMiner/Minecraft inspired game. + +Copyright (c) 2010-2017 Perttu Ahola +and contributors (see source file comments and the version control log) + +In case you downloaded the source code: +--------------------------------------- +If you downloaded the Minetest Engine source code in which this file is +contained, you probably want to download the [Minetest Game](https://github.com/minetest/minetest_game/) +project too. See its README.txt for more information. + +Further documentation +---------------------- +- Website: http://minetest.net/ +- Wiki: http://wiki.minetest.net/ +- Developer wiki: http://dev.minetest.net/ +- Forum: http://forum.minetest.net/ +- Github: https://github.com/minetest/minetest/ +- doc/ directory of source distribution + +This game is not finished +-------------------------- +- Don't expect it to work as well as a finished game will. +- Please report any bugs. When doing that, debug.txt is useful. + +Default controls +---------------- + +All controls are re-bindable using settings. +Some can be changes in the key config dialog in the settings tab. + +- Move mouse: Look around +- W, A, S, D: Move +- Space: Jump/move up +- Shift: Sneak/move down +- Q: Drop itemstack +- Shift + Q: Drop single item +- Left mouse button: Dig/punch/take item +- Right mouse button: Place/use +- Shift + right mouse button: Build (without using) +- I: Inventory menu +- Mouse wheel: Select item +- 0-9: Select item +- Z: Zoom (needs zoom privilege) +- T: Chat +- /: Command +- Esc: Pause menu/abort/exit (pauses only singleplayer game) +- R: Enable/disable full range view +- +: Increase view range +- -: Decrease view range +- K: Enable/disable fly mode (needs fly privilege) +- J: Enable/disable fast mode (needs fast privilege) +- H: Enable/disable noclip mode (needs noclip privilege) +- E: Move fast in fast mode +- F1: Hide/show HUD +- F2: Hide/show chat +- F3: Disable/enable fog +- F4: Disable/enable camera update (Mapblocks are not updated anymore when disabled, disabled in release builds) +- F5: Cycle through debug info screens +- F6: Cycle through profiler info screens +- F7: Cycle through camera modes +- F8: Toggle cinematic mode +- F9: Cycle through minimap modes +- Shift + F9: Change minimap orientation +- F10: Show/hide console +- F12: Take screenshot +- P: Write stack traces into debug.txt + +Paths +----- + +Locations: + +* bin - Compiled binaries +* share - Distributed read-only data +* user - User-created modifiable data + +Where each location is on each platform: + +* Windows .zip / RUN_IN_PLACE source: + * bin = bin + * share = . + * user = . +* Linux installed: + * bin = /usr/bin + * share = /usr/share/minetest + * user = ~/.minetest +* macOS: + * bin = Contents/MacOS + * share = Contents/Resources + * user = Contents/User OR ~/Library/Application Support/minetest + +Worlds can be found as separate folders in: user/worlds/ + +Configuration file: +------------------- +- Default location: + `user/minetest.conf` +- It is created by Minetest when it is ran the first time. +- A specific file can be specified on the command line: + `--config ` +- A run-in-place build will look for the configuration file in + `location_of_exe/../minetest.conf` and also `location_of_exe/../../minetest.conf` + +Command-line options: +--------------------- +- Use --help + +Compiling +--------- + +### Compiling on GNU/Linux + +Install dependencies. Here's an example for Debian/Ubuntu: + + $ sudo apt-get install build-essential libirrlicht-dev cmake libbz2-dev libpng-dev libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev + +For Fedora users: + + $ sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl* openal* libvorbis* libXxf86vm-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel irrlicht-devel bzip2-libs gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel doxygen spatialindex-devel bzip2-devel + +You can install git for easily keeping your copy up to date. +If you don’t want git, read below on how to get the source without git. +This is an example for installing git on Debian/Ubuntu: + + $ sudo apt-get install git + +For Fedora users: + + $ sudo dnf install git + +Download source (this is the URL to the latest of source repository, which might not work at all times) using git: + + $ git clone --depth 1 https://github.com/minetest/minetest.git + $ cd minetest + +Download minetest_game (otherwise only the "Minimal development test" game is available) using git: + + $ git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game + +Download source, without using git: + + $ wget https://github.com/minetest/minetest/archive/master.tar.gz + $ tar xf master.tar.gz + $ cd minetest-master + +Download minetest_game, without using git: + + $ cd games/ + $ wget https://github.com/minetest/minetest_game/archive/master.tar.gz + $ tar xf master.tar.gz + $ mv minetest_game-master minetest_game + $ cd .. + +Build a version that runs directly from the source directory: + + $ cmake . -DRUN_IN_PLACE=TRUE + $ make -j + +Run it: + + $ ./bin/minetest + +- Use cmake . -LH to see all CMake options and their current state +- If you want to install it system-wide (or are making a distribution package), + you will want to use -DRUN_IN_PLACE=FALSE +- You can build a bare server by specifying -DBUILD_SERVER=TRUE +- You can disable the client build by specifying -DBUILD_CLIENT=FALSE +- You can select between Release and Debug build by -DCMAKE_BUILD_TYPE= + - Debug build is slower, but gives much more useful output in a debugger +- If you build a bare server, you don't need to have Irrlicht installed. + In that case use -DIRRLICHT_SOURCE_DIR=/the/irrlicht/source + +### CMake options + +General options: + + BUILD_CLIENT - Build Minetest client + BUILD_SERVER - Build Minetest server + CMAKE_BUILD_TYPE - Type of build (Release vs. Debug) + Release - Release build + Debug - Debug build + SemiDebug - Partially optimized debug build + RelWithDebInfo - Release build with Debug information + MinSizeRel - Release build with -Os passed to compiler to make executable as small as possible + ENABLE_CURL - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http + ENABLE_CURSES - Build with (n)curses; Enables a server side terminal (command line option: --terminal) + ENABLE_FREETYPE - Build with FreeType2; Allows using TTF fonts + ENABLE_GETTEXT - Build with Gettext; Allows using translations + ENABLE_GLES - Search for Open GLES headers & libraries and use them + ENABLE_LEVELDB - Build with LevelDB; Enables use of LevelDB map backend + ENABLE_POSTGRESQL - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater recommended) + ENABLE_REDIS - Build with libhiredis; Enables use of Redis map backend + ENABLE_SPATIAL - Build with LibSpatial; Speeds up AreaStores + ENABLE_SOUND - Build with OpenAL, libogg & libvorbis; in-game Sounds + ENABLE_LUAJIT - Build with LuaJIT (much faster than non-JIT Lua) + ENABLE_SYSTEM_GMP - Use GMP from system (much faster than bundled mini-gmp) + RUN_IN_PLACE - Create a portable install (worlds, settings etc. in current directory) + USE_GPROF - Enable profiling using GProf + VERSION_EXTRA - Text to append to version (e.g. VERSION_EXTRA=foobar -> Minetest 0.4.9-foobar) + +Library specific options: + + BZIP2_INCLUDE_DIR - Linux only; directory where bzlib.h is located + BZIP2_LIBRARY - Linux only; path to libbz2.a/libbz2.so + CURL_DLL - Only if building with cURL on Windows; path to libcurl.dll + CURL_INCLUDE_DIR - Only if building with cURL; directory where curl.h is located + CURL_LIBRARY - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib + EGL_INCLUDE_DIR - Only if building with GLES; directory that contains egl.h + EGL_LIBRARY - Only if building with GLES; path to libEGL.a/libEGL.so + FREETYPE_INCLUDE_DIR_freetype2 - Only if building with Freetype2; directory that contains an freetype directory with files such as ftimage.h in it + FREETYPE_INCLUDE_DIR_ft2build - Only if building with Freetype2; directory that contains ft2build.h + FREETYPE_LIBRARY - Only if building with Freetype2; path to libfreetype.a/libfreetype.so/freetype.lib + FREETYPE_DLL - Only if building with Freetype2 on Windows; path to libfreetype.dll + GETTEXT_DLL - Only when building with Gettext on Windows; path to libintl3.dll + GETTEXT_ICONV_DLL - Only when building with Gettext on Windows; path to libiconv2.dll + GETTEXT_INCLUDE_DIR - Only when building with Gettext; directory that contains iconv.h + GETTEXT_LIBRARY - Only when building with Gettext on Windows; path to libintl.dll.a + GETTEXT_MSGFMT - Only when building with Gettext; path to msgfmt/msgfmt.exe + IRRLICHT_DLL - Only on Windows; path to Irrlicht.dll + IRRLICHT_INCLUDE_DIR - Directory that contains IrrCompileConfig.h + IRRLICHT_LIBRARY - Path to libIrrlicht.a/libIrrlicht.so/libIrrlicht.dll.a/Irrlicht.lib + LEVELDB_INCLUDE_DIR - Only when building with LevelDB; directory that contains db.h + LEVELDB_LIBRARY - Only when building with LevelDB; path to libleveldb.a/libleveldb.so/libleveldb.dll.a + LEVELDB_DLL - Only when building with LevelDB on Windows; path to libleveldb.dll + PostgreSQL_INCLUDE_DIR - Only when building with PostgreSQL; directory that contains libpq-fe.h + POSTGRESQL_LIBRARY - Only when building with PostgreSQL; path to libpq.a/libpq.so + REDIS_INCLUDE_DIR - Only when building with Redis; directory that contains hiredis.h + REDIS_LIBRARY - Only when building with Redis; path to libhiredis.a/libhiredis.so + SPATIAL_INCLUDE_DIR - Only when building with LibSpatial; directory that contains spatialindex/SpatialIndex.h + SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex_c.so/spatialindex-32.lib + LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located + LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so + MINGWM10_DLL - Only if compiling with MinGW; path to mingwm10.dll + OGG_DLL - Only if building with sound on Windows; path to libogg.dll + OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h + OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a + OPENAL_DLL - Only if building with sound on Windows; path to OpenAL32.dll + OPENAL_INCLUDE_DIR - Only if building with sound; directory where al.h is located + OPENAL_LIBRARY - Only if building with sound; path to libopenal.a/libopenal.so/OpenAL32.lib + OPENGLES2_INCLUDE_DIR - Only if building with GLES; directory that contains gl2.h + OPENGLES2_LIBRARY - Only if building with GLES; path to libGLESv2.a/libGLESv2.so + SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h + SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib + VORBISFILE_DLL - Only if building with sound on Windows; path to libvorbisfile-3.dll + VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a + VORBIS_DLL - Only if building with sound on Windows; path to libvorbis-0.dll + VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside + VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a + XXF86VM_LIBRARY - Only on Linux; path to libXXf86vm.a/libXXf86vm.so + ZLIB_DLL - Only on Windows; path to zlib1.dll + ZLIBWAPI_DLL - Only on Windows; path to zlibwapi.dll + ZLIB_INCLUDE_DIR - Directory that contains zlib.h + ZLIB_LIBRARY - Path to libz.a/libz.so/zlibwapi.lib + +### Compiling on Windows + +* This section is outdated. In addition to what is described here: + * In addition to minetest, you need to download minetest_game. + * If you wish to have sound support, you need libogg, libvorbis and libopenal + +* You need: + * CMake: + http://www.cmake.org/cmake/resources/software.html + * A compiler + * MinGW: http://www.mingw.org/ + * or Visual Studio: http://msdn.microsoft.com/en-us/vstudio/default + * Irrlicht SDK 1.7: + http://irrlicht.sourceforge.net/downloads.html + * Zlib headers (zlib125.zip) + http://www.winimage.com/zLibDll/index.html + * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip): + http://www.winimage.com/zLibDll/index.html + * SQLite3 headers and library + https://www.sqlite.org/download.html + * Optional: gettext library and tools: + http://gnuwin32.sourceforge.net/downlinks/gettext.php + * This is used for other UI languages. Feel free to leave it out. + * And, of course, Minetest: + http://minetest.net/download +* Steps: + * Select a directory called DIR hereafter in which you will operate. + * Make sure you have CMake and a compiler installed. + * Download all the other stuff to DIR and extract them into there. + ("extract here", not "extract to packagename/") + * NOTE: zlib125dll.zip needs to be extracted into zlib125dll + * NOTE: You need to extract sqlite3.h & sqlite3ext.h from sqlite3 source + and sqlite3.dll & sqlite3.def from sqlite3 precompiled binaries + into "sqlite3" directory, and generate sqlite3.lib using command + "LIB /DEF:sqlite3.def /OUT:sqlite3.lib" + * All those packages contain a nice base directory in them, which + should end up being the direct subdirectories of DIR. + * You will end up with a directory structure like this (+=dir, -=file): + ----------------- + + DIR + * zlib-1.2.5.tar.gz + * zlib125dll.zip + * irrlicht-1.8.3.zip + * sqlite-amalgamation-3130000.zip (SQLite3 headers) + * sqlite-dll-win32-x86-3130000.zip (SQLite3 library for 32bit system) + * 110214175330.zip (or whatever, this is the minetest source) + + zlib-1.2.5 + * zlib.h + + win32 + ... + + zlib125dll + * readme.txt + + dll32 + ... + + irrlicht-1.8.3 + + lib + + include + ... + + sqlite3 + sqlite3.h + sqlite3ext.h + sqlite3.lib + sqlite3.dll + + gettext (optional) + +bin + +include + +lib + + minetest + + src + + doc + * CMakeLists.txt + ... + ----------------- + * Start up the CMake GUI + * Select "Browse Source..." and select DIR/minetest + * Now, if using MSVC: + * Select "Browse Build..." and select DIR/minetest-build + * Else if using MinGW: + * Select "Browse Build..." and select DIR/minetest + * Select "Configure" + * Select your compiler + * It will warn about missing stuff, ignore that at this point. (later don't) + * Make sure the configuration is as follows + (note that the versions may differ for you): + + BUILD_CLIENT [X] + BUILD_SERVER [ ] + CMAKE_BUILD_TYPE Release + CMAKE_INSTALL_PREFIX DIR/minetest-install + IRRLICHT_SOURCE_DIR DIR/irrlicht-1.8.3 + RUN_IN_PLACE [X] + WARN_ALL [ ] + ZLIB_DLL DIR/zlib125dll/dll32/zlibwapi.dll + ZLIB_INCLUDE_DIR DIR/zlib-1.2.5 + ZLIB_LIBRARIES DIR/zlib125dll/dll32/zlibwapi.lib + GETTEXT_BIN_DIR DIR/gettext/bin + GETTEXT_INCLUDE_DIR DIR/gettext/include + GETTEXT_LIBRARIES DIR/gettext/lib/intl.lib + GETTEXT_MSGFMT DIR/gettext/bin/msgfmt + + * If CMake complains it couldn't find SQLITE3, choose "Advanced" box on the + right top corner, then specify the location of SQLITE3_INCLUDE_DIR and + SQLITE3_LIBRARY manually. + * If you want to build 64-bit minetest, you will need to build 64-bit version + of irrlicht engine manually, as only 32-bit pre-built library is provided. + * Hit "Configure" + * Hit "Configure" once again 8) + * If something is still coloured red, you have a problem. + * Hit "Generate" + If using MSVC: + * Open the generated minetest.sln + * The project defaults to the "Debug" configuration. Make very sure to + select "Release", unless you want to debug some stuff (it's slower + and might not even work at all) + * Build the ALL_BUILD project + * Build the INSTALL project + * You should now have a working game with the executable in + DIR/minetest-install/bin/minetest.exe + * Additionally you may create a zip package by building the PACKAGE + project. + If using MinGW: + * Using the command line, browse to the build directory and run 'make' + (or mingw32-make or whatever it happens to be) + * You may need to copy some of the downloaded DLLs into bin/, see what + running the produced executable tells you it doesn't have. + * You should now have a working game with the executable in + DIR/minetest/bin/minetest.exe + +### Bat script to build Windows releases of Minetest + +This is how we build Windows releases. + + set sourcedir=%CD% + set installpath="C:\tmp\minetest_install" + set irrlichtpath="C:\tmp\irrlicht-1.7.2" + + set builddir=%sourcedir%\bvc10 + mkdir %builddir% + pushd %builddir% + cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DRUN_IN_PLACE=TRUE -DCMAKE_INSTALL_PREFIX=%installpath% + if %errorlevel% neq 0 goto fail + "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" ALL_BUILD.vcxproj /p:Configuration=Release + if %errorlevel% neq 0 goto fail + "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" INSTALL.vcxproj /p:Configuration=Release + if %errorlevel% neq 0 goto fail + "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release + if %errorlevel% neq 0 goto fail + popd + echo Finished. + exit /b 0 + + :fail + popd + echo Failed. + exit /b 1 -- cgit v1.2.3