GithubHelp home page GithubHelp logo

nocte- / hexahedra Goto Github PK

View Code? Open in Web Editor NEW
53.0 53.0 6.0 6.96 MB

Hexahedra is a C++ framework for voxel games.

Home Page: http://hexahedra.net/

License: Other

Lua 3.02% C 6.57% C++ 90.04% Bison 0.03% Python 0.33%

hexahedra's People

Contributors

friederschueler avatar nocte- 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

Watchers

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

hexahedra's Issues

Player models

Rudimentary support for player models; no animations or skinning, just a static 3D model. (Depends on #7.)

Items

Basic support for items:

  • Server-side definitions sent to the client on login
  • Lua classes to manipulate items and item definitions
  • Hotbar support

Window is very slow to move around

Window manager Xfwm 4.11, compositing enabled:

This is xfwm4 version 4.11.1 (revision 2b800f4) for Xfce 4.10
Compiled against GTK+-2.24.23, using GTK+-2.24.23.

When moving the window (even while in menu) using mouse, the window will lag behind and move in a sluggish way.

Chat

Allow players to press T and open a chat window.

Everything is black

Everything is black.
blackhexahedra

I have AMD Radeon HD 7700 Series on Windows 7. If you need more information please let me know.

Use shaders

The OpenGL fixed function pipeline functions are deprecated. The sooner we move everything to shaders, the better. (This will break OpenGL 1.5 compatibility, but that's no big deal.)

Compilation errors on Xubuntu 14.04

All dependencies are installed, with the PPA being used.

[  3%] Built target run
[ 26%] Built target hexacommon
[ 73%] Built target hexaserver
[ 73%] Built target hexahedra-server
[ 74%] Building CXX object hexa/client/CMakeFiles/hexaclient.dir/sfml.cpp.o
In file included from /home/calinou/_VCS/hexahedra/hexa/client/sfml.hpp:49:0,
                 from /home/calinou/_VCS/hexahedra/hexa/client/sfml.cpp:22:
/home/calinou/_VCS/hexahedra/hexa/client/renderer_i.hpp: In constructor 'hexa::renderer_i::renderer_i(hexa::scene&)':
/home/calinou/_VCS/hexahedra/hexa/client/renderer_i.hpp:59:43: error: invalid initialization of non-const reference of type 'hexa::scene&' from an rvalue of type '<brace-enclosed initializer list>'
         , chunk_offset_{world_chunk_center}
                                           ^
make[2]: *** [hexa/client/CMakeFiles/hexaclient.dir/sfml.cpp.o] Error 1
make[1]: *** [hexa/client/CMakeFiles/hexaclient.dir/all] Error 2
make: *** [all] Error 2

BTW, how do you compile and use the libraries from the Git repositories, instead of having to rely on a PPA?

Hotbar

The current hotbar implementation doesn't integrate with the entity system. Create a hotbar component that can be accessed through Lua, and synchronized with the clients.

Packaging

  • An application icon
  • A desktop file and rpm/deb package for Linux
  • A resource file and NSIS installer for Windows

manpages outdated

'hexahedra --help' shows more information than the manpage.
The manpage for hexahedra-server does not list any options or parameters while 'hexahedra-server --help' does.

Decouple camera from player

The camera system is now hardcoded as a first-player view. Instead, the position should be fixed to a given entity (plus an offset), and the view direction can be set to either:

  • Fixed yaw/pitch
  • Yaw/pitch controlled by mouse
  • Aim at another entity

Surface data versioning

Let the server keep a version number of each chunk surface, so it can send updates to the client only when the client's cached version is too old.

Player clips into blocks above

The player can build blocks underneath itself even when there is a block directly above the player. When there are 1-3 blocks (without spaces in between) directly above the player, the player is moved upwards to the next available space with 2 empty blocks.
However when there are 4 or more blocks above the player position, the player is only moved up 3 blocks from the original position and gets stuck in a non empty space. The camera clips and only the surfaces adjacent to air are visible.
The block two spaces underneath the player (where the head used to be) is removed and the block directly above, on which the player is standing, is invisible, though the surfaces can be highlighted when moving over them with the crosshair. The player can move and falls into the void when moving off the block.
By right clicking(destroying), the player is moved upwards by two blocks. Left clicking(placing) does nothing.

Server time

The server should inform the clients of the time of day, so they can draw the sky and adjust the light levels accordingly.

Client stuck in loading screen

arch linux x86_64 gcc (GCC) 4.9.0

started server, started client, press singleplayer, short "loading..." screen, then crash

[frieder@deathstar games] $ ./hexahedra                                                                                                                                                                         
No matching texture for window.3 or window
No matching texture for window.4 or window
No matching texture for lapiz or lapiz
No matching texture for machine or machine
No matching texture for note or note
No matching texture for bed or bed
No matching texture for bed.head or bed
No matching texture for piston or piston
No matching texture for cobweb or cobweb
No matching texture for deadshrub or deadshrub
No matching texture for tallgrass or tallgrass
No matching texture for fern or fern
No matching texture for deadbush or deadbush
No matching texture for shingles or shingles
No matching texture for bookcase or bookcase
No matching texture for fireplace.off or fireplace
No matching texture for fireplace.on or fireplace
No matching texture for plain.gold or plain
No matching texture for plain.iron or plain
No matching texture for fire or fire
No matching texture for spawner or spawner
No matching texture for plain.diamond or plain
No matching texture for wheat.0 or wheat
No matching texture for wheat.1 or wheat
No matching texture for wheat.2 or wheat
No matching texture for wheat.3 or wheat
No matching texture for wheat.4 or wheat
No matching texture for wheat.5 or wheat
No matching texture for wheat.6 or wheat
No matching texture for wheat.7 or wheat
No matching texture for sign or sign
No matching texture for door.wood or door
No matching texture for ladder or ladder
No matching texture for lever or lever
No matching texture for door.iron or door
No matching texture for torch or torch
No matching texture for button.stone or button
No matching texture for cactus or cactus
No matching texture for sugarcane or sugarcane
No matching texture for pumpkin or pumpkin                                                                                                                                                                      
No matching texture for chest or chest                                                                                                                                                                          
No matching texture for window.2 or window                                                                                                                                                                      
No matching texture for bars.iron or bars                                                                                                                                                                       
No matching texture for melon or melon                                                                                                                                                                          
No matching texture for stem or stem                                                                                                                                                                            
No matching texture for vines or vines                                                                                                                                                                          
No matching texture for fencegate or fencegate                                                                                                                                                                  
No matching texture for stairs.brick.red or stairs                                                                                                                                                              
No matching texture for stairs.brick.grey or stairs                                                                                                                                                             
No matching texture for lilypad or lilypad                                                                                                                                                                      
No matching texture for stairs.brick.nether or stairs                                                                                                                                                           
*** Error in `./hexahedra': free(): invalid next size (fast): 0x00007fd7d80115b0 ***                                                                                                                            
======= Backtrace: =========                                                                                                                                                                                    
/usr/lib/libc.so.6(+0x73f8e)[0x7fd7e8c03f8e]                                                                                                                                                                    
/usr/lib/libc.so.6(+0x7988e)[0x7fd7e8c0988e]                                                                                                                                                                    
/usr/lib/libc.so.6(+0x7a04b)[0x7fd7e8c0a04b]                                                                                                                                                                    
./hexahedra(_ZNSt6vectorIcSaIcEE14_M_fill_insertEN9__gnu_cxx17__normal_iteratorIPcS1_EEmRKc+0x183)[0x523e53]                                                                                                    
./hexahedra(_ZN4hexa9main_game13entity_updateERNS_12deserializerINS_6packetEEE+0x8a2)[0x519462]                                                                                                                 
./hexahedra(_ZN4hexa9main_game7receiveERKNS_6packetE+0xfa)[0x51bfaa]                                                                                                                                            
./hexahedra(_ZN4hexa10udp_client4pollEj+0xc9)[0x544189]                                                                                                                                                         
./hexahedra(_ZN4hexa9main_game9bg_threadEv+0x38f)[0x51c4cf]                                                                                                                                                     
/usr/lib/libboost_thread.so.1.55.0(+0xccfa)[0x7fd7ec554cfa]                                                                                                                                                     
/usr/lib/libpthread.so.0(+0x7124)[0x7fd7e8f47124]                                                                                                                                                               
/usr/lib/libc.so.6(clone+0x6d)[0x7fd7e8c794bd]                                                                                                                                                                  
======= Memory map: ========                                                                                                                                                                                    
00400000-005ae000 r-xp 00000000 00:10 330674                             /usr/local/games/hexahedra                                                                                                             
007ad000-007af000 rw-p 001ad000 00:10 330674                             /usr/local/games/hexahedra                                                                                                             
007af000-007b2000 rw-p 00000000 00:00 0                                                                                                                                                                         
00fcc000-02926000 rw-p 00000000 00:00 0                                  [heap]                                                                                                                                 
40db7000-40e56000 rw-p 00000000 00:00 0                                                                                                                                                                         
41242000-412e1000 rw-p 00000000 00:00 0                                                                                                                                                                         
418d6000-41975000 rw-p 00000000 00:00 0                                                                                                                                                                         
41c00000-41c02000 r-xs 00000000 00:22 27729                              /tmp/.glznbToo (deleted)                                                                                                               
7fd7d0000000-7fd7d0021000 rw-p 00000000 00:00 0                                                                                                                                                                 
7fd7d0021000-7fd7d4000000 ---p 00000000 00:00 0                                                                                                                                                                 
7fd7d8000000-7fd7d8553000 rw-p 00000000 00:00 0                                                                                                                                                                 
7fd7d8553000-7fd7dc000000 ---p 00000000 00:00 0                                                                                                                                                                 
7fd7dec41000-7fd7df041000 rw-s 7af81000 00:05 11391                      /dev/nvidiactl                                                                                                                         
7fd7df041000-7fd7df241000 rw-s 1952a9000 00:05 11391                     /dev/nvidiactl                                                                                                                         
7fd7df247000-7fd7df447000 rw-s 196be7000 00:05 11391                     /dev/nvidiactl                                                                                                                         
7fd7df448000-7fd7df4a0000 r--p 00000000 00:10 330003                     /usr/local/share/hexahedra/fonts/default.ttf                                                                                           
7fd7df4a0000-7fd7df4b4000 r-xp 00000000 00:10 283043                     /usr/lib/libresolv-2.19.so                                                                                                             
7fd7df4b4000-7fd7df6b3000 ---p 00014000 00:10 283043                     /usr/lib/libresolv-2.19.so                                                                                                             
7fd7df6b3000-7fd7df6b4000 r--p 00013000 00:10 283043                     /usr/lib/libresolv-2.19.so                                                                                                             
7fd7df6b4000-7fd7df6b5000 rw-p 00014000 00:10 283043                     /usr/lib/libresolv-2.19.so                                                                                                             
7fd7df6b5000-7fd7df6b7000 rw-p 00000000 00:00 0                                                                                                                                                                 
7fd7df6b8000-7fd7df6bd000 r-xp 00000000 00:10 283115                     /usr/lib/libnss_dns-2.19.so                                                                                                            
7fd7df6bd000-7fd7df8bc000 ---p 00005000 00:10 283115                     /usr/lib/libnss_dns-2.19.so                                                                                                            
7fd7df8bc000-7fd7df8bd000 r--p 00004000 00:10 283115                     /usr/lib/libnss_dns-2.19.so                                                                                                            
7fd7df8bd000-7fd7df8be000 rw-p 00005000 00:10 283115                     /usr/lib/libnss_dns-2.19.so                                                                                                            
7fd7df8c0000-7fd7df8cb000 r-xp 00000000 00:10 283076                     /usr/lib/libnss_files-2.19.so                                                                                                          
7fd7df8cb000-7fd7dfaca000 ---p 0000b000 00:10 283076                     /usr/lib/libnss_files-2.19.so                                                                                                          
7fd7dfaca000-7fd7dfacb000 r--p 0000a000 00:10 283076                     /usr/lib/libnss_files-2.19.so                                                                                                          
7fd7dfacb000-7fd7dfacc000 rw-p 0000b000 00:10 283076                     /usr/lib/libnss_files-2.19.so

client log looks fine:

Initializing Enet
Enet running
Launching server...
Path is "/home/frieder/Workspace/hexahedra/hexa/client"
Cannot launch server (program file '/home/frieder/Workspace/hexahedra/hexa/client/hexahedra-server' does not exist), attempt to connect to localhost
OpenGL version: 4.4.0 NVIDIA 337.12
GL_AMD_multi_draw_indirect GL_AMD_seamless_cubemap_per_texture GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_bindless_texture GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_color_buffer_float GL_ARB_compatibility GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_compute_shader GL_ARB_compute_variable_group_size GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_program GL_ARB_fragment_program_shadow GL_ARB_fragment_shader GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_geometry_shader4 GL_ARB_get_program_binary GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_indirect_parameters GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multi_draw_indirect GL_ARB_multisample GL_ARB_multitexture GL_ARB_occlusion_query GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_robust_buffer_access_behavior GL_ARB_robustness GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_query_buffer_object GL_ARB_shader_storage_buffer_object GL_ARB_shader_subroutine GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_include GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_sparse_texture GL_ARB_stencil_texturing GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_stencil8 GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_texture_float GL_ATI_texture_mirror_once GL_S3_s3tc GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_depth_bounds_test GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample 
GL_EXTX_framebuffer_mixed_formats GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_shader_objects GL_EXT_separate_specular_color GL_EXT_shader_image_load_store GL_EXT_shader_integer_mix GL_EXT_shadow_funcs GL_EXT_stencil_two_side GL_EXT_stencil_wrap GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_latc GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_shared_exponent GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback2 GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit GL_EXT_x11_sync_object GL_EXT_import_sync_object GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KHR_debug GL_KTX_buffer_region GL_NV_bindless_multi_draw_indirect GL_NV_bindless_texture GL_NV_blend_equation_advanced GL_NV_blend_square GL_NV_compute_program5 GL_NV_conditional_render GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_depth_buffer_float GL_NV_depth_clamp GL_NV_draw_texture GL_NV_ES1_1_compatibility GL_NV_ES3_1_compatibility GL_NV_explicit_multisample GL_NV_fence GL_NV_float_buffer GL_NV_fog_distance GL_NV_fragment_program GL_NV_fragment_program_option GL_NV_fragment_program2 GL_NV_framebuffer_multisample_coverage GL_NV_geometry_shader4 GL_NV_gpu_program4 GL_NV_gpu_program4_1 GL_NV_gpu_program5 GL_NV_gpu_program5_mem_extended GL_NV_gpu_program_fp64 GL_NV_gpu_shader5 GL_NV_half_float GL_NV_light_max_exponent GL_NV_multisample_coverage GL_NV_multisample_filter_hint GL_NV_occlusion_query GL_NV_packed_depth_stencil GL_NV_parameter_buffer_object GL_NV_parameter_buffer_object2 GL_NV_path_rendering GL_NV_pixel_data_range GL_NV_point_sprite GL_NV_primitive_restart GL_NV_register_combiners GL_NV_register_combiners2 GL_NV_shader_atomic_counters GL_NV_shader_atomic_float GL_NV_shader_buffer_load GL_NV_shader_storage_buffer_object GL_NV_texgen_reflection GL_NV_texture_barrier GL_NV_texture_compression_vtc GL_NV_texture_env_combine4 GL_NV_texture_expand_normal GL_NV_texture_multisample GL_NV_texture_rectangle GL_NV_texture_shader GL_NV_texture_shader2 GL_NV_texture_shader3 GL_NV_transform_feedback GL_NV_transform_feedback2 GL_NV_vdpau_interop GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_attrib_integer_64bit GL_NV_vertex_buffer_unified_memory GL_NV_vertex_program GL_NV_vertex_program1_1 GL_NV_vertex_program2 GL_NV_vertex_program2_option GL_NV_vertex_program3 GL_NVX_conditional_render GL_NVX_gpu_memory_info GL_NVX_nvenc_interop GL_NV_shader_thread_group GL_NV_shader_thread_shuffle GL_KHR_blend_equation_advanced GL_SGIS_generate_mipmap GL_SGIS_texture_lod GL_SGIX_depth_texture GL_SGIX_shadow GL_SUN_slice_accum 
Found: GLSL
Found: Shader objects
Found: Vertex shader
Found: Fragment shader
Trying to connect to localhost:15556 ...
Connected!
Logged in successfully
Connected to LOL server
Registered 162 textures and 1 models
Registered 600 materials
initial clock synced to 1
MOTD: Be excellent to eachother.
player 0 spawned at (2147483712 2147483648 2147483700)

server log:

Server started
Initializing OpenCL...
OpenCL activated
Initializing Enet...
ENet initialized
Server game DB: /home/frieder/.hexahedra/server_db/defaultgame/world.leveldb
Runtime error: persistence_leveldb: IO error: lock /home/frieder/.hexahedra/server_db/defaultgame/world.leveldb/LOCK: Resource temporarily unavailable
############ some weird non utf-8 signs here in this line ########
player 0 (Player) login
Spawning new player at (2147483712 2147483648 2147483700)
send greeting to player 0
send height maps to player 0
send terrain to player 0
send position to player 0
player 0 is logged in
disconnecting player 0
New player connected.
player 0 (Player) login
Spawning new player at (2147483712 2147483648 2147483700)
send greeting to player 0
send height maps to player 0
send terrain to player 0
send position to player 0
player 0 is logged in
disconnecting player 0

I dont know why the server can not get the lock, permissions are right :/ maybe because of the first start (.hexahedra was empty).

IQM support

IQM files are a better bet than Assimp, especially if models are being sent over the network.

Player names

Allow players to enter their name, and display this name over their heads.

We can do this in a hacky way until we have a proper login system, but the name tag should be a component in the entity system so we can reuse it for other purposes as well.

Thinking about... Qt!

Hi,

did you think of maybe using some (bigger) framework like Qt for hexahedra? Qt offers a lot for functionality and faster develpment. Maybe you could replace two or three other dependencies if you use Qt. It offers good cross platform developing & installing tools and lot of nice features other than gui things like network and OpenGL.
http://www.kdab.com/opengl-in-qt-5-1-part-1/
And maybe you should split the project into three seperate projects:
hexahedra-client
hexahedra-server
hexahedra-lib
It is easier to maintain and better build process via IDE. At least I couldn't get it work with kdevelop4 or netbeans.
Maybe you can think about it.

Multithreaded access to the game world

Read/write access to the game world is growing too complex and buggy. Move the access policies to separate classes, and let the rest of the application access the world data through those.

Mr. Fixit model is non-free, suggested free replacement

I see you're using Mr. Fixit as player model, which is non-free (disallows commercial use).

Mr. Fixit conceptualized, modeled and animated by geartrooper a.k.a. John Siar [email protected]
Mr. Fixit textures, normal maps and displacement by Acord a.k.a Anthony Cord [email protected]
mask textures by Nieb

Geartrooper would like to thank Stacy for her love, support and trust. He would like to thank lee salzman a.k.a. eihrul for his support and suggestions, without which much of mr fixit would not be possible.

Mr. Fixit is hereby released under the CC-BY-NC (Creative Commons Attribution Non-Commercial) license. See http://creativecommons.org/licenses/by-nc/3.0/legalcode for more info. Please contact Geartrooper for permission for uses not within the scope of this license.

But SnoutX10K is just fine, it's under CC BY 3.0 since late 2012 (originally done for BananaBread, where eihrul paid geartrooper to release it under a free license).

Issue35 opencl.cl not found problem

Compile now works, I just had to replace #include <crypto++... with #include <cryptopp... cause header files in linux are in that format. Just to mention. I will post a "how to compile" guide on arch linux the next days. It it pretty straiht forward anyways...

Now the new problem:

[frieder@deathstar hexahedra] $ cd /usr/local/games/
[frieder@deathstar games] $ ls
hexahedra  hexahedra-server
[frieder@deathstar games] $ ./hexahedra-server 
Cannot set up OpenCL : cannot open OpenCL file opencl.cl
Cannot set up OpenCL : cannot open OpenCL file opencl.cl
Cannot set up OpenCL : cannot open OpenCL file opencl.cl

server_log looks fine:

Server started
Initializing OpenCL...
OpenCL activated
Initializing Enet...
ENet initialized
Server game DB: /home/frieder/.hexahedra/server_db/defaultgame/world.leveldb
Read Lua script /usr/local/share/hexahedra/games/defaultgame/freebuild-actions.lua
Read Lua script /usr/local/share/hexahedra/games/defaultgame/game.lua
Read Lua script /usr/local/share/hexahedra/games/defaultgame/identify.lua
Read Lua script /usr/local/share/hexahedra/games/defaultgame/jump.lua
Read Lua script /usr/local/share/hexahedra/games/defaultgame/moderncraft-materials.lua
Set up game world from /usr/local/share/hexahedra/games/defaultgame/setup.json
Read entity database
All systems go

maybe this is a hexanoise problem, I dont know. I am just investigating a client crash problem.

Btw. http://hexahedra.net/ is mentioned in the source code, but empty, maybe redirect straight to the forums? I didn't notice them, they are a bit hidden :) They are not mentioned here on the github repo readme. Maybe add the link there and for your blog it goes the same, there are no cross-references, you have to find everything on your own.

Build fails. OpenCL Dependency?

I am very interested in this project and I am very happy that you are still working on this, but sadly I can not build it on my machine (Archlinux x86_64). I tried to install libcl, but it failed. Same for Travis build it seems: https://travis-ci.org/Nocte-/hexahedra/builds

I installed an OpenCL implementation now and now it builds, but USE_OPENCL is "OFF". It seems that there is a dependendy to OpenCl wheter you use it or not.

Now (after some other minor issues) my build fails with:

[ 73%] Building CXX object hexa/server/CMakeFiles/hexahedra-server.dir/main.cpp.o
/home/frieder/Workspace/hexahedra/hexa/server/main.cpp: In Funktion »int main(int, char*)«:
/home/frieder/Workspace/hexahedra/hexa/server/main.cpp:321:17: Fehler: »class hexa::noise::generator_context« hat kein Element namens »set_global«
gen_ctx.set_global("seed", 2.0);
^
hexa/server/CMakeFiles/hexahedra-server.dir/build.make:57: recipe for target 'hexa/server/CMakeFiles/hexahedra-server.dir/main.cpp.o' failed
make[2]: *
* [hexa/server/CMakeFiles/hexahedra-server.dir/main.cpp.o] Error 1
CMakeFiles/Makefile2:321: recipe for target 'hexa/server/CMakeFiles/hexahedra-server.dir/all' failed
make[1]: *** [hexa/server/CMakeFiles/hexahedra-server.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
make: *** [all] Error 2

Custom hitboxes

Block hitboxes are automatically generated from their shapes. It would be nice if a game designer could provide a custom hitbox. For example, it's really annoying right now to slide along a fence, because you get stuck behind the posts.

Relatives paths possible? CMake config?

This is a feature request: I think it would be nice, to have a option to just store all files and libs etc. needed for the game relative to the binary if you compile it with static linking. So you can just copy the whole directory with all the files to another pc and run the game. I know that is not the old school linux way, but better for a game. You can provide a zip file and players only unzip and run it.
Maybe this is already possible, but I need more time to investigate the CMake config and the sources.

Entity system network synchronization

The current network sync is a hacky mess. Add proper change tracking to the entity system, and distribute the changes to the clients in a more structured way. Components should have the following attributes:

  • Access: some components are only for the player that owns them, and some must never be sent to anyone.
  • For some components, the update rate must be inversely related to the distance.
  • Not all components need a reliable transfer.

Allow games to define their own solar system

It should be possible to define the celestial bodies in setup.json, and send this info over the network. This information includes:

  • Parameters of the home planet (axial tilt, latitude, rotation speed)
  • Light curves of all three light types, depending on the sun's angle
  • Orbital definitions of sun, moons, and planets.

Console spammed with GL_INVALID_ENUM messages

When I start HexaHedra (with --ogl2) and enter a world console gets spammed with:

An internal OpenGL call failed in RenderTarget.cpp (276) : GL_INVALID_ENUM, an unacceptable value has been specified for an enumerated argument

OS: Linux Debian Jessie
GPU: ATI Radeon HD 5670

Server process crashes in singleplayer

On Win32, the server process crashes randomly. Stack traces look very werid, probably a problem with the crossplatform build tools. Switching to VS2013 might help.

Player keeps moving after key is released

When jumping while moving and releasing the move key while still holding the jump key, the player continues to move and jump, even though the move key is no longer pressed. Pressing any key stops the player.

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.