Giter VIP home page Giter VIP logo

freeminer / freeminer Goto Github PK

View Code? Open in Web Editor NEW
399.0 399.0 86.0 113.95 MB

Freeminer is an open source sandbox game inspired by Minecraft.

Home Page: http://freeminer.org/

License: Other

Makefile 0.86% Java 0.38% Shell 0.42% CMake 1.07% Lua 10.13% GLSL 0.68% C++ 78.53% C 6.24% HTML 0.01% JavaScript 0.03% Perl 0.54% CSS 0.01% Python 1.02% Batchfile 0.02% Mathematica 0.01% EJS 0.03% Dockerfile 0.03%
game minecraft

freeminer's Introduction

Freeminer

Build Status Latest Stable Version Total Downloads License

Freeminer is an open source sandbox game inspired by Minecraft.

Freeminer is based on Minetest which is developed by a number of contributors from all over the globe.

It aims to make the game fun while trading off some bits of perfectionism.

Installing

Further documentation

Default controls

  • W A S D: move
  • Space: jump/climb
  • Shift: sneak/go down
  • Q: drop item
  • I: inventory
  • Mouse: turn/look
  • Mouse left: dig/punch
  • Mouse right: place/use
  • Mouse wheel: select item
  • Esc: pause menu
  • T: chat
  • Z: zoom
  • Tab: player list
  • ~: toggle console

Compiling

Install dependencies. Here's an example for

Debian/Ubuntu:

sudo apt-get install build-essential libirrlicht-dev cmake libbz2-dev libgettextpo0 \
libsqlite3-dev libleveldb-dev libsnappy-dev libcurl4-openssl-dev libluajit-5.1-dev libgmp-dev libspatialindex-dev libboost-system-dev \
libpng12-dev libjpeg-dev libfreetype6-dev libxxf86vm-dev libgl1-mesa-dev libvorbis-dev libopenal-dev
# First  - needed always
# Second - recommended for servers and singleplayer
# Third  - needed for client only

# optional:
sudo apt-get install libhiredis-dev cmake-curses-gui

Fedora:

# the first five is the closest to Debian/Ubuntu build-essential
sudo yum install make automake gcc gcc-c++ kernel-devel cmake \
irrlicht-devel bzip2-libs libpng-devel libjpeg-turbo-devel freetype-devel \
libXxf86vm-devel mesa-libGL-devel sqlite-devel libvorbis-devel \
openal-soft-devel libcurl-devel luajit-devel leveldb-devel snappy-devel \
gettext-devel msgpack msgpack-devel spatialindex-devel bzip2-devel

Arch Linux:

sudo pacman -S curl irrlicht leveldb libvorbis luajit openal sqlite cmake msgpack-c freetype2

Gentoo/Funtoo:

emerge -av media-libs/libvorbis media-libs/openal dev-games/irrlicht \
dev-libs/msgpack dev-libs/leveldb sci-libs/libspatialindex

OS X:

brew install cmake freetype gettext hiredis irrlicht jpeg leveldb libogg \
libvorbis luajit msgpack

Recommended irrlicht version: 1.8.2

Download source code:

git clone --recursive https://github.com/freeminer/freeminer.git
cd freeminer

Recommended minimum compiler version: gcc 4.8 or clang 3.3

Build it (GNU/Linux):

mkdir -p build && cd build
cmake ..
nice make -j $(nproc || sysctl -n hw.ncpu || echo 2)

or for debian based:

curl https://raw.githubusercontent.com/freeminer/freeminer/master/build_tools/build.sh | sh

Build it (OS X):

mkdir _build && cd _build
cmake .. -DGETTEXT_LIBRARY=/usr/local/opt/gettext/lib/libgettextlib.dylib -DGETTEXT_INCLUDE_DIR=/usr/local/opt/gettext/include
make -j8 package

(if the make command doesn't work on OS X install bsdmake)

Build it (windows):

vs2013

vs2015

Play it!

cd ..
bin/freeminer

Minetest

Build Status Translation status License

Minetest is a free open-source voxel game engine with easy modding and game creation.

Copyright (C) 2010-2022 Perttu Ahola [email protected] and contributors (see source file comments and the version control log)

Table of Contents

  1. Further Documentation
  2. Default Controls
  3. Paths
  4. Configuration File
  5. Command-line Options
  6. Compiling
  7. Docker
  8. Version Scheme

Further documentation

Default controls

All controls are re-bindable using settings. Some can be changed in the key config dialog in the settings tab.

Button Action
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/use
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)
+ 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 Aux1 (Move fast in fast mode. Games may add special features)
C Cycle through camera modes
V Cycle through minimap modes
Shift + V Change minimap orientation
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 information screens
F6 Cycle through profiler info screens
F10 Show/hide console
F12 Take screenshot

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 = .
  • Windows installed:
    • bin = C:\Program Files\Minetest\bin (Depends on the install location)
    • share = C:\Program Files\Minetest (Depends on the install location)
    • user = %APPDATA%\Minetest or %MINETEST_USER_PATH%
  • Linux installed:
    • bin = /usr/bin
    • share = /usr/share/minetest
    • user = ~/.minetest or $MINETEST_USER_PATH
  • macOS:
    • bin = Contents/MacOS
    • share = Contents/Resources
    • user = Contents/User or ~/Library/Application Support/minetest or $MINETEST_USER_PATH

Worlds can be found as separate folders in: user/worlds/

Configuration file

  • Default location: user/minetest.conf
  • This file is created by closing Minetest for the first time.
  • A specific file can be specified on the command line: --config <path-to-file>
  • 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

Docker

We provide Minetest server Docker images using the GitLab mirror registry.

Images are built on each commit and available using the following tag scheme:

  • registry.gitlab.com/minetest/minetest/server:latest (latest build)
  • registry.gitlab.com/minetest/minetest/server:<branch/tag> (current branch or current tag)
  • registry.gitlab.com/minetest/minetest/server:<commit-id> (current commit id)

If you want to test it on a Docker server you can easily run:

sudo docker run registry.gitlab.com/minetest/minetest/server:<docker tag>

If you want to use it in a production environment you should use volumes bound to the Docker host to persist data and modify the configuration:

sudo docker create -v /home/minetest/data/:/var/lib/minetest/ -v /home/minetest/conf/:/etc/minetest/ registry.gitlab.com/minetest/minetest/server:master

Data will be written to /home/minetest/data on the host, and configuration will be read from /home/minetest/conf/minetest.conf.

Note: If you don't understand the previous commands please read the official Docker documentation before use.

You can also host your Minetest server inside a Kubernetes cluster. See our example implementation in misc/kubernetes.yml.

Version scheme

We use major.minor.patch since 5.0.0-dev. Prior to that we used 0.major.minor.

  • Major is incremented when the release contains breaking changes, all other numbers are set to 0.
  • Minor is incremented when the release contains new non-breaking features, patch is set to 0.
  • Patch is incremented when the release only contains bugfixes and very minor/trivial features considered necessary.

Since 5.0.0-dev and 0.4.17-dev, the dev notation refers to the next release, i.e.: 5.0.0-dev is the development version leading to 5.0.0. Prior to that we used previous_version-dev.

freeminer's People

Contributors

appgurueu avatar blockmen avatar celeron55 avatar clobberxd avatar desour avatar ekdohibs avatar erlehmann avatar est31 avatar hybriddog avatar kahrl avatar kwolekr avatar lhofhansl avatar nerzhul avatar numberzero avatar oblomov avatar paramat avatar pilzadam avatar proller avatar realbadangel avatar red-001 avatar rubenwardy avatar sfan5 avatar shadowninja avatar smalljoker avatar sofar avatar srifqi avatar turkeymcmac avatar wuzzy2 avatar x2048 avatar zeno- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freeminer's Issues

[bug]Failed to compile latest git

chaoswormz@chaoswormz-P35-DS3L ~/Documents/freeminer $ bash update.sh
remote: Counting objects: 17, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 9), reused 2 (delta 0)
Unpacking objects: 100% (11/11), done.
From https://github.com/freeminer/freeminer
66528b0..152e792 master -> origin/master
Updating 66528b0..152e792
Fast-forward
src/map.cpp | 19 +++++++++++--------
src/map.h | 5 +++--
src/server.cpp | 2 +-
src/server.h | 3 +++
4 files changed, 18 insertions(+), 11 deletions(-)
-- *** Will build version 0.4.9.3-free-dev ***
-- IRRLICHT_SOURCE_DIR =
-- IRRLICHT_INCLUDE_DIR = /usr/include/irrlicht
-- IRRLICHT_LIBRARY = /usr/lib/libIrrlicht.so
-- CURL_INCLUDE_DIR = /usr/include/curl
-- CURL_LIBRARY = /usr/lib/x86_64-linux-gnu/libcurl.so
-- CURL_DLL =
-- cURL support enabled
-- GetText disabled
-- Sound enabled
-- Found system sqlite3 header file in /usr/include
-- Found system sqlite3 library /usr/lib/x86_64-linux-gnu/libsqlite3.so
-- Using project jsoncpp library
-- LuaJIT library: /usr/lib/x86_64-linux-gnu/libluajit-5.1.so
-- LuaJIT headers: /usr/include/luajit-2.0
-- LuaJIT found, checking for broken versions...
-- LuaJIT version ok
-- LevelDB library: /usr/lib/libleveldb.a
-- LevelDB headers: /usr/include/leveldb
-- Snappy library: /usr/lib/libsnappy.so
-- Snappy headers: /usr/include
-- LevelDB backend enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /home/chaoswormz/Documents/freeminer
[ 1%] Built target jsoncpp
[ 1%] Built target cguittfont
-- *** Detected git version 0.4.9.3-270-g152e792-dirty ***
[ 1%] Built target GenerateVersion
Scanning dependencies of target freeminerserver
Scanning dependencies of target freeminer
[ 1%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/common/c_content.cpp.o
[ 2%] Building CXX object src/CMakeFiles/freeminer.dir/script/common/c_content.cpp.o
[ 2%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/cpp_api/s_env.cpp.o
[ 2%] Building CXX object src/CMakeFiles/freeminer.dir/script/cpp_api/s_env.cpp.o
[ 2%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/cpp_api/s_item.cpp.o
[ 3%] Building CXX object src/CMakeFiles/freeminer.dir/script/cpp_api/s_item.cpp.o
[ 4%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/cpp_api/s_node.cpp.o
[ 4%] Building CXX object src/CMakeFiles/freeminer.dir/script/cpp_api/s_node.cpp.o
[ 4%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/cpp_api/s_nodemeta.cpp.o
[ 5%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_craft.cpp.o
[ 6%] Building CXX object src/CMakeFiles/freeminer.dir/script/cpp_api/s_nodemeta.cpp.o
[ 7%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_craft.cpp.o
[ 7%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_env.cpp.o
[ 7%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_env.cpp.o
[ 7%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_inventory.cpp.o
[ 7%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_inventory.cpp.o
[ 8%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_item.cpp.o
[ 9%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_item.cpp.o
[ 9%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_mapgen.cpp.o
[ 9%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_mapgen.cpp.o
[ 10%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_nodemeta.cpp.o
[ 11%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_nodemeta.cpp.o
[ 11%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_nodetimer.cpp.o
[ 12%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_object.cpp.o
[ 12%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_nodetimer.cpp.o
[ 13%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_object.cpp.o
[ 13%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_particles.cpp.o
[ 13%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_particles.cpp.o
[ 13%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_rollback.cpp.o
[ 14%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_server.cpp.o
[ 15%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_rollback.cpp.o
[ 15%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_server.cpp.o
[ 16%] Building CXX object src/CMakeFiles/freeminerserver.dir/script/lua_api/l_vmanip.cpp.o
[ 16%] Building CXX object src/CMakeFiles/freeminer.dir/script/lua_api/l_vmanip.cpp.o
[ 16%] Building CXX object src/CMakeFiles/freeminerserver.dir/util/serialize.cpp.o
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp: In function ‘bool serializeStructToString(std::string_, std::string, void_)’:
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:423:27: error: expected ‘:’ before ‘PRIu16’
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:423:27: error: ‘PRIu16’ was not declared in this scope
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:429:27: error: expected ‘:’ before ‘PRIu32’
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:429:27: error: ‘PRIu32’ was not declared in this scope
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:435:27: error: expected ‘:’ before ‘PRIu64’
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:435:27: error: ‘PRIu64’ was not declared in this scope
make[2]: *** [src/CMakeFiles/freeminerserver.dir/util/serialize.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/freeminerserver.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 17%] Building CXX object src/CMakeFiles/freeminer.dir/util/serialize.cpp.o
[ 17%] Building CXX object src/CMakeFiles/freeminer.dir/biome.cpp.o
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp: In function ‘bool serializeStructToString(std::string_, std::string, void_)’:
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:423:27: error: expected ‘:’ before ‘PRIu16’
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:423:27: error: ‘PRIu16’ was not declared in this scope
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:429:27: error: expected ‘:’ before ‘PRIu32’
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:429:27: error: ‘PRIu32’ was not declared in this scope
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:435:27: error: expected ‘:’ before ‘PRIu64’
/home/chaoswormz/Documents/freeminer/src/util/serialize.cpp:435:27: error: ‘PRIu64’ was not declared in this scope
make[2]: *** [src/CMakeFiles/freeminer.dir/util/serialize.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [src/CMakeFiles/freeminer.dir/all] Error 2
make: *** [all] Error 2

g++ warnings

/home/olegabr/freeminer/src/camera.cpp: In member function ‘void Camera::update(LocalPlayer*, irr::f32, irr::f32, v2u32, irr::f32, int, ClientEnvironment&)’:
/home/olegabr/freeminer/src/camera.cpp:486:46: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
   (g_settings->getBool("free_move") == false && current_camera_mode == CAMERA_MODE_FIRST ||
                                              ^
/home/olegabr/freeminer/src/guiChatConsole.cpp: In member function ‘virtual bool GUIChatConsole::OnEvent(const irr::SEvent&)’:
/home/olegabr/freeminer/src/guiChatConsole.cpp:573:78: warning: ignoring return value of ‘int mbtowc(wchar_t*, const char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
     mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) );
                                                                              ^
/home/olegabr/freeminer/src/intlGUIEditBox.cpp: In member function ‘virtual bool irr::gui::intlGUIEditBox::OnEvent(const irr::SEvent&)’:
/home/olegabr/freeminer/src/intlGUIEditBox.cpp:280:86: warning: ignoring return value of ‘int mbtowc(wchar_t*, const char*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
             mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) );
                                                                                      ^
/home/olegabr/freeminer/src/map.cpp: In member function ‘bool ServerMap::initBlockMake(BlockMakeData*, v3s16)’:
/home/olegabr/freeminer/src/map.cpp:2831:21: warning: unused variable ‘sector’ [-Wunused-variable]
    ServerMapSector *sector = createSector(sectorpos);
                     ^
In file included from /home/olegabr/freeminer/src/localplayer.cpp:20:0:
/home/olegabr/freeminer/src/localplayer.h: In constructor ‘LocalPlayer::LocalPlayer(IGameDef*)’:
/home/olegabr/freeminer/src/localplayer.h:91:7: warning: ‘LocalPlayer::m_can_jump’ will be initialized after [-Wreorder]
  bool m_can_jump;
       ^
/home/olegabr/freeminer/src/localplayer.h:65:6: warning:   ‘int LocalPlayer::camera_mode’ [-Wreorder]
  int camera_mode;
      ^
/home/olegabr/freeminer/src/localplayer.cpp:36:1: warning:   when initialized here [-Wreorder]
 LocalPlayer::LocalPlayer(IGameDef *gamedef):
 ^
/home/olegabr/freeminer/src/map.cpp: In member function ‘bool ServerMap::initBlockMake(BlockMakeData*, v3s16)’:
/home/olegabr/freeminer/src/map.cpp:2831:21: warning: unused variable ‘sector’ [-Wunused-variable]
    ServerMapSector *sector = createSector(sectorpos);
                     ^

client hangs with shaders enabled

Hi,

When I have shaders enabled I get the following and the client hangs, while diabling the shaders everything works.

This is info about my GPU and I am using the latest master.

Using renderer: OpenGL 3.0
Gallium 0.4 on AMD RV670: X.Org
OpenGL driver version is 1.2 or better.
GLSL version: 1.3
11:26:39: ERROR[MeshUpdateThread]: Waiting for shader solids_shader timed out.
11:26:40: ERROR[MeshUpdateThread]: Waiting for shader liquids_shader timed out.
11:26:41: ERROR[MeshUpdateThread]: Waiting for shader alpha_shader timed out.
11:26:42: ERROR[MeshUpdateThread]: Waiting for shader leaves_shader timed out.
11:26:43: ERROR[MeshUpdateThread]: Waiting for shader plants_shader timed out.
11:26:44: ERROR[MeshUpdateThread]: Waiting for texture disable_img.png timed out.
11:26:45: ERROR[MeshUpdateThread]: Waiting for texture disable_img.png timed out.
11:26:46: ERROR[MeshUpdateThread]: Waiting for texture disable_img.png timed out.
11:26:47: ERROR[MeshUpdateThread]: Waiting for shader solids_shader timed out.
11:26:48: ERROR[MeshUpdateThread]: Waiting for shader liquids_shader timed out.
11:26:49: ERROR[MeshUpdateThread]: Waiting for shader alpha_shader timed out.
11:26:50: ERROR[MeshUpdateThread]: Waiting for shader leaves_shader timed out.
11:26:51: ERROR[MeshUpdateThread]: Waiting for shader plants_shader timed out.
11:26:52: ERROR[MeshUpdateThread]: Waiting for texture disable_img.png timed out.
11:26:53: ERROR[MeshUpdateThread]: Waiting for texture disable_img.png timed out.
11:26:54: ERROR[MeshUpdateThread]: Waiting for texture disable_img.png timed out.
11:26:55: ERROR[MeshUpdateThread]: Waiting for shader solids_shader timed out.
11:26:56: ERROR[MeshUpdateThread]: Waiting for shader liquids_shader timed out.

Button

2014 01 28_00 44 30 633295800
The button is too small.

Use messagepack as packet serialization format.

http://msgpack.org/

This will break the compatibility but it's worth it.

The idea is to use MessagePack-serialized dictionary of format:

{
    -1: packet id,
    0: some data,
    1: some data,
    …
}

-1 is reserved for packet id, which is int; 0, 1 and friends should be constants (defined in enum, check clientserver.h for examples).

This way when somebody wants to add something in compatible fashion (a fork), they just use numbers starting from, say, 1000. Another fork could use numbers starting from 2000, and so on.

This allows to easily extend the protocol for us too, making it fork-friendly is just a bonus.

We also get deserialization of basic types (vector, string, float, int, map) for free.

Some code sample: http://stackoverflow.com/a/18084886/2606891

Things to do:

  • do not output local chat messages, make sure they go through server (useful for nickname colors)
  • "reliable" death: make sure player respawns at spawn point
  • use SendToAll
  • all strings sent over net must be utf8
  • conversion should only happen on output (gui/console log)
  • rewrite active object serialization (getClientInitializationData)
  • make client know list of players online

Mod api for key-value storage

Both keys and values are strings, data is to be stored in a separate LevelDB database. Engine provides basic API to get, set, query and delete string by key; other functions (get/set table, etc) are to be implemented in builtin Lua.

Error in mainmenu.lua

Irrlicht Engine version 1.8.0
Linux 3.7.10-gentoo #4 SMP Thu Apr 25 19:41:14 YEKT 2013 i686
Using renderer: OpenGL 4.3.0
GeForce GT 430/PCIe/SSE2: NVIDIA Corporation
OpenGL driver version is 1.2 or better.
GLSL version: 4.3
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/menu_header.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/blank.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/server_flags_password.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/server_flags_creative.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/server_flags_damage.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/server_flags_pvp.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/background.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/menu.png
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/selected.png
10:19:08: ERROR[main]: MAINMENU ERROR: ...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:911: attempt to get length of field 'favorites' (a nil value)
10:19:08: ERROR[main]: stack traceback:
10:19:08: ERROR[main]:  ...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:911: in function 'buildfunc'
10:19:08: ERROR[main]:  ...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:357: in function 'gettab'
10:19:08: ERROR[main]:  ...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:167: in function 'update_menu'
10:19:08: ERROR[main]:  ...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:1268: in function 'event_handler'
10:19:08: ERROR[main]:  ...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:216: in function <...tolegokot/Projects/freeminer/bin/../builtin/mainmenu.lua:214>
10:19:08: ERROR[main]:  ...e/kotolegokot/Projects/freeminer/builtin/async_event.lua:15: in function <...e/kotolegokot/Projects/freeminer/builtin/async_event.lua:6>
Loaded texture: /home/kotolegokot/Projects/freeminer/textures/base/pack/menu_header.png
Quit message received.

rare "core dumped"

bt:

#0  Map::updateLighting (this=0x8075e5300, a_blocks=<value optimized out>, modified_blocks=<value optimized out>) at /usr/home/proller/freeminer/src/map.cpp:936
936                     if(block->isDummy())
[New Thread 133e8400 (LWP 101678/minetestserver)]
[New Thread 807007c00 (LWP 101677/minetestserver)]
[New Thread 807007800 (LWP 100305/minetestserver)]
[New Thread 807007400 (LWP 100177/minetestserver)]
(gdb) bt
#0  Map::updateLighting (this=0x8075e5300, a_blocks=<value optimized out>, modified_blocks=<value optimized out>) at /usr/home/proller/freeminer/src/map.cpp:936
#1  0x0000000000515d19 in Map::transformLiquidsFinite (this=0x8075e5300, modified_blocks=@0x7fffffffbc30) at /usr/home/proller/freeminer/src/map.cpp:2059
#2  0x00000000005162d3 in Map::transformLiquids (this=0x8075e5300, modified_blocks=@0x7fffffffbc30) at /usr/home/proller/freeminer/src/map.cpp:2070
#3  0x00000000005bdde2 in Server::AsyncRunStep (this=0x7fffffffb820) at /usr/home/proller/freeminer/src/server.cpp:1241
#4  0x00000000005d1fda in ServerThread::Thread (this=0x807073320) at /usr/home/proller/freeminer/src/server.cpp:110
#5  0x0000000000409aa4 in JThread::TheThread (param=0x807073320) at /usr/home/proller/freeminer/src/jthread/pthread/jthread.cpp:171
#6  0x00000008013f4d34 in pthread_getprio () from /lib/libthr.so.3
#7  0x0000000000000000 in ?? ()

bt full

(gdb) bt full
#0  Map::updateLighting (this=0x8075e5300, a_blocks=<value optimized out>, modified_blocks=<value optimized out>) at /usr/home/proller/freeminer/src/map.cpp:936
        block = (MapBlock *) 0x1eff9900
#1  0x0000000000515d19 in Map::transformLiquidsFinite (this=0x8075e5300, modified_blocks=@0x7fffffffbc30) at /usr/home/proller/freeminer/src/map.cpp:2059
        i = <value optimized out>
        nt = <value optimized out>
        p0 = {X = 0, Y = 0, Z = 0}
        total_level = 32767
        neighbors = {{n = {param0 = 58232, param1 = 137 '\211', param2 = 16 '\020'}, t = NEIGHBOR_UPPER, p = {X = -9803, Y = 284, Z = 8}, l = false, i = false}, {n = {param0 = 1, param1 = 0 '\0', param2 = 0 '\0'},
    t = NEIGHBOR_UPPER, p = {X = 8577, Y = 285, Z = 8}, l = false, i = false}, {n = {param0 = 0, param1 = 0 '\0', param2 = 0 '\0'}, t = 137, p = {X = 9312, Y = 138, Z = 0}, l = false, i = false}, {n = {param0 = 48936,
      param1 = 159 '\237', param2 = 255 '�'}, t = 32767, p = {X = 1, Y = 0, Z = 0}, l = false, i = false}, {n = {param0 = 58232, param1 = 137 '\211', param2 = 16 '\020'}, t = NEIGHBOR_UPPER, p = {X = -16584, Y = -97,
      Z = 32767}, l = false, i = false}, {n = {param0 = 0, param1 = 0 '\0', param2 = 0 '\0'}, t = NEIGHBOR_UPPER, p = {X = 18880, Y = 100, Z = 0}, l = false, i = false}, {n = {param0 = 137, param1 = 0 '\0', param2 = 0 '\0'},
    t = NEIGHBOR_UPPER, p = {X = 0, Y = 0, Z = 0}, l = false, i = false}}
        liquid_levels_want = "Xg\230R\000\000"
        can_liquid_same_level = 0 '\0'
        melt_kind = 0
        want_level = <value optimized out>
        liquid_levels = "\000\000\000\000\000\000"
        liquid_kind = 49664
        liquid_kind_flowing = 49328
        melt_kind_flowing = 0
        level_max = <value optimized out>
        nodemgr = (INodeDefManager *) 0x8071c2100
        __debug_stacker = {m_stack = 0x13022000, m_overflowed = false}
        loopcount = 0
        initial_size = 185
        relax = 1 '\001'
        fast_flood = false
        must_reflow = {m_map = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, unsigned char> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, unsigned char> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fffff9fbf98, _M_right = 0x7fffff9fbf98},
        _M_node_count = 0}}}, m_list = {<std::_List_base<irr::core::vector3d<short int>,std::allocator<irr::core::vector3d<short int> > >> = {
      _M_impl = {<std::allocator<std::_List_node<irr::core::vector3d<short int> > >> = {<__gnu_cxx::new_allocator<std::_List_node<irr::core::vector3d<short int> > >> = {<No data fields>}, <No data fields>}, _M_node = {
          _M_next = 0x7fffff9fbfc0, _M_prev = 0x7fffff9fbfc0}}}, <No data fields>}}
        must_reflow_second = {m_map = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, unsigned char> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, unsigned char> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fffff9fbf58, _M_right = 0x7fffff9fbf58},
        _M_node_count = 0}}}, m_list = {<std::_List_base<irr::core::vector3d<short int>,std::allocator<irr::core::vector3d<short int> > >> = {
      _M_impl = {<std::allocator<std::_List_node<irr::core::vector3d<short int> > >> = {<__gnu_cxx::new_allocator<std::_List_node<irr::core::vector3d<short int> > >> = {<No data fields>}, <No data fields>}, _M_node = {
          _M_next = 0x7fffff9fbf80, _M_prev = 0x7fffff9fbf80}}}, <No data fields>}}
        lighting_modified_blocks = {_M_t = {
    _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, MapBlock*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, MapBlock*> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x7fffff9fbfd8, _M_right = 0x7fffff9fbfd8},
      _M_node_count = 0}}}
        loop_rand = <value optimized out>
        end_ms = 2740171264
        ret = 185
        __PRETTY_FUNCTION__ = "irr::s32 Map::transformLiquidsFinite(std::map<irr::core::vector3d<short int>, MapBlock*, std::less<irr::core::vector3d<short int> >, std::allocator<std::pair<const irr::core::vector3d<short int>, MapB"...
#2  0x00000000005162d3 in Map::transformLiquids (this=0x8075e5300, modified_blocks=@0x7fffffffbc30) at /usr/home/proller/freeminer/src/map.cpp:2070
        nodemgr = <value optimized out>
        __debug_stacker = {m_stack = 0x44e537ab00000003, m_overflowed = 176}
        loopcount = <value optimized out>
        initial_size = <value optimized out>
        must_reflow = {m_map = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, unsigned char> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, unsigned char> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0xffff0208, _M_left = 0x900072260, _M_right = 0xffffffff},
        _M_node_count = 16777216}}}, m_list = {<std::_List_base<irr::core::vector3d<short int>,std::allocator<irr::core::vector3d<short int> > >> = {
      _M_impl = {<std::allocator<std::_List_node<irr::core::vector3d<short int> > >> = {<__gnu_cxx::new_allocator<std::_List_node<irr::core::vector3d<short int> > >> = {<No data fields>}, <No data fields>}, _M_node = {
          _M_next = 0x0, _M_prev = 0x0}}}, <No data fields>}}
        lighting_modified_blocks = {_M_t = {
    _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, MapBlock*> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const irr::core::vector3d<short int>, MapBlock*> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x8a2480, _M_left = 0x1306a2d8, _M_right = 0x131f4ca0},
      _M_node_count = 1}}}
        end_ms = <value optimized out>
        ret = <value optimized out>
        __PRETTY_FUNCTION__ = "irr::s32 Map::transformLiquids(std::map<irr::core::vector3d<short int>, MapBlock*, std::less<irr::core::vector3d<short int> >, std::allocator<std::pair<const irr::core::vector3d<short int>, MapBlock*>"...
#3  0x00000000005bdde2 in Server::AsyncRunStep (this=0x7fffffffb820) at /usr/home/proller/freeminer/src/server.cpp:1241
        sp = {m_profiler = 0x8a2480, m_name = {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
      _M_p = 0x1306a2d8 "Server: liquid transform"}}, m_timer = 0x130e5980, m_type = SPT_ADD}
        __debug_stacker = {m_stack = 0x13022000, m_overflowed = false}
        dtime = 0.100000001
        __PRETTY_FUNCTION__ = "void Server::AsyncRunStep()"
#4  0x00000000005d1fda in ServerThread::Thread (this=0x807073320) at /usr/home/proller/freeminer/src/server.cpp:110
        end_ms = 2740171264
        __debug_stacker = {m_stack = 0x13022000, m_overflowed = false}
        dedicated_server_step = 0.100000001
        __PRETTY_FUNCTION__ = "virtual void* ServerThread::Thread()"
---Type <return> to continue, or q <return> to quit---
#5  0x0000000000409aa4 in JThread::TheThread (param=0x807073320) at /usr/home/proller/freeminer/src/jthread/pthread/jthread.cpp:171
        jthread = <value optimized out>
        ret = <value optimized out>
#6  0x00000008013f4d34 in pthread_getprio () from /lib/libthr.so.3
No symbol table info available.
#7  0x0000000000000000 in ?? ()

Failed to compile latest git

Linking CXX executable ../bin/freeminer
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libleveldb.a(table_builder.o): In function `leveldb::TableBuilder::WriteBlock(leveldb::BlockBuilder*, leveldb::BlockHandle*)':
(.text+0x681): undefined reference to `snappy::MaxCompressedLength(unsigned long)'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libleveldb.a(table_builder.o): In function `leveldb::TableBuilder::WriteBlock(leveldb::BlockBuilder*, leveldb::BlockHandle*)':
(.text+0x6bf): undefined reference to `snappy::RawCompress(char const*, unsigned long, char*, unsigned long*)'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libleveldb.a(format.o): In function `leveldb::ReadBlock(leveldb::RandomAccessFile*, leveldb::ReadOptions const&, leveldb::BlockHandle const&, leveldb::Block**)':
(.text+0x607): undefined reference to `snappy::GetUncompressedLength(char const*, unsigned long, unsigned long*)'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/libleveldb.a(format.o): In function `leveldb::ReadBlock(leveldb::RandomAccessFile*, leveldb::ReadOptions const&, leveldb::BlockHandle const&, leveldb::Block**)':
(.text+0x67c): undefined reference to `snappy::RawUncompress(char const*, unsigned long, char*)'
collect2: ld returned 1 exit status
make[2]: *** [bin/freeminer] Error 1
make[1]: *** [src/CMakeFiles/freeminer.dir/all] Error 2
make: *** [all] Error 2
chaoswormz@chaoswormz-P35-DS3L ~/Documents/freeminer $ 

language settings seems to not work

I've set language = ru in freeminer.conf file and in all game.conf files I've found, but game interface is still in english. It seems that locale folder should exists, but it does not created in the building process. What should be done to run the game in some specific language?

Farmesh

Goal: keep 30 fps with 1000 view range
first small part commited and disabled by default
TODO:
send all mapgen params to client, calculate on client far areas
add far shader: farer - smoother

Win 7 64bit: Freeminer stops loading world at "Media"

OS: Windows 7 Pro 64bit

Freeminer 0.4.9.3 doesn't let me enter worlds anymore, it just stops doing anything when reaching "Media" loading point. And then after some time (1-2 min), it says "Error: Client disconnected"

Small menu fixes

  • move shaders option to bottom
  • enlarge all lists —
    singleplayer: games;
    client: servers;
    server: games;
    texture packs;
    mods

Automatically generate example config file from defaultsettings.cpp, remove freeminer.conf.example from the repo

defaultsettings.cpp should first be ran through preprocessor and then processed by a script. The script parses the file and outputs example config file. Comments above the settings should be converted as well.

The script is to be run during cmake package state. The config file it generates is to be added to source and binary packages we distribute.

This way we won't have to modify multiple files when adding a setting and the example settings file will always be up-to-date.

Example:

// FOV when using zoom
settings->setDefault("zoom_fov", "15");

Output:

# FOV when using zoom
#zoom_fov = 15

[bug]Failed to compile latest git

[ 3%] Building CXX object src/CMakeFiles/freeminer.dir/guiChatConsole.cpp.o
In file included from /usr/include/c++/4.6/x86_64-linux-gnu/./bits/messages_members.h:37:0,
from /usr/include/c++/4.6/bits/locale_facets_nonio.h:1931,
from /usr/include/c++/4.6/locale:43,
from /usr/include/c++/4.6/iomanip:45,
from /home/chaoswormz/Documents/freeminer/src/game.cpp:72:
/usr/include/libintl.h:40:14: error: expected unqualified-id before ‘char’
/usr/include/libintl.h:40:14: error: expected initializer before ‘char’
/home/chaoswormz/Documents/freeminer/src/guiChatConsole.cpp: In member function ‘virtual bool GUIChatConsole::OnEvent(const irr::SEvent&)’:
/home/chaoswormz/Documents/freeminer/src/guiChatConsole.cpp:576:78: warning: ignoring return value of ‘int mbtowc(wchar_t_, const char_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
make[2]: *** [src/CMakeFiles/freeminer.dir/game.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Linking CXX executable ../../bin/freeminerserver
make[1]: *** [src/CMakeFiles/freeminer.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 46%] Built target freeminerserver
make: *** [all] Error 2

.gitignore

The line "minetest.conf" should be replaced with "freeminer.conf".

Colored chat

Add the ability for mods to output colored text into chat.

Perhaps we should just use some sort of escape sequences?

server block place/dig visual confirmation

Enable some sort of block highlighting after placing (and digging) it, until the server "confirms" the action, so that the player knows it is not safe to step on it.

This would help bridge-building immensely.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.