addons | ||
assets | ||
background_loader_scene | ||
dispensaire_gridmap | ||
dispensaire_scenes | ||
game_scene | ||
gdnative | ||
gui_scene/GUI | ||
login_scene | ||
modules | ||
scenes | ||
test_grid_map | ||
test_scene | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
ca-certificates.crt | ||
default_env.tres | ||
export_presets.cfg | ||
global.gd | ||
global.tscn | ||
icon.png | ||
icon.png.import | ||
JukeboxPannel.gd | ||
portail.gd | ||
project.godot | ||
README.md | ||
TODO |
Build
Before build and launch client, build module (before, we need include modules on godot source)
Build module
mkdir build
cd build
# Disable build directory on godot editor
touch .gdignore
# clone godot
git clone https://github.com/godotengine/godot.git
cd godot
# switch on release
#git checkout 3.1.2-stable
git checkout 3.2
# Create link with our module (or copy file to godot/modules - as you like)
cd modules
for file in ../../../modules/*
do
if [ -d $file ]
then
echo "$file"
ln -s $file .
fi
done
cd ..
# Copy modules doc to godot
cp modules/*/doc_classes/* doc/classes/.
# Clean project (if you build before)
scons -j$(nproc) -c
# Build a debug version
scons -j$(nproc) platform=x11 target=debug
# or build release_debug
scons -j$(nproc) platform=x11 target=release_debug
# or build release -> becarefull, this version works on root project and impossible to launch editor
scons -j$(nproc) platform=x11 target=release tools=no
cd ../..
Generate doc
If you want, you can regenerate doc. (Normally it's generated)
cd build/godot
./bin/godot.x11.tools.64 --doctool .
cp modules/*/doc_classes/* doc/classes/.
Launch godot with module
cd build/godot
bin/godot.x11.tools.64
cd ../..
Package client khaganat
Configure export
Configure on project export (or edit file export_presets.cfg)
Ex.: export_presets.cfg
[preset.0]
name="khaganat.linux.64"
platform="Linux/X11"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
patch_list=PoolStringArray( )
script_export_mode=1
script_encryption_key=""
[preset.0.options]
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
binary_format/64_bits=true
custom_template/release=""
custom_template/debug=""
Generate package
godot --path . --export khaganat.linux.64 khaganat.linux64.bin
Launch client khaganat
With godot
godot login_scene/login_scene.tsc
Library
NetworkConnection
NetworkConnection -> class to manage/use NetworkConnectionCore All times, connect on NetworkConnectionCore (to get singleton) and launch function The goal is to don't managed Singleton, this class manage At end of program, you need execute function "terminate_network_connection" to remove singleton.
NetworkConnectionCore -> class Singleton (uniq object) [contains network connexion, state connexion] _state_connexion[StateConnectionBase] : Object change class with state connexion [StateConnectionNotInitialized, StateConnectionLogin, StateConnectionSynchronize, StateConnectionConnected, StateConnectionQuit] _network_data [NetworkData] : Object state connexion (Tick receive, send, bit acknowledge) _queue [BitStreamQueue] : queue to store message UDP (just simple method to try re-order message receive by UDP) _socketUDP [Ref] : network connexion
NetworkConnection(object A) NetworkConnection(object B) ...
| |
+-------+----+---------------------------------------+-----------------------------------------+ | NetworkConnectionCore * _network_data * _queue * _socketUDP * _state_connexion if StateConnectionConnected
ReferentialMessage
ReferentialMessage -> class to manage/use ReferentialMessageCore
ReferentialMessageCore -> class singleton (uniq object) [Manage data provide by msg.xml], we can encode/decode khaganat's message
ViewMessage
PacketServer +---------+ +---------+ +---------+ | Level A | | Level B | | Level C | | (0) | | (0) | | (0) | +---------+ +---------+ +---------+ +---------+ +---------+ | Level B | | Level C | | (1) | | (1) | +---------+ +---------+ +---------+ | Level C | | (2) | +---------+ +---------+ | Level C | | (3) | +---------+
Message UDP : +-------------+ | Server Part | +-------------+ | Type Message (system / application) |
+---------+ | | +----------------+ | | -> | System Message | | Message | +----------------+ | | | UDP | +----------------+ +---------+ +---------+ +---------+ | | -> | Normal Message | -> | Level A +-+ Level B +-+ Level C + | | +----------------+ +---------+ +---------+ +---------+ +---------+
Message UDP : +-------------------+------------+--- | CurrentSendNumber | SystemMode | . . . | 32 bits | 1 bit | +-+-+-+-+-+-+-+-+-+-+------------+--- 1 -> system mode 0 -> normal mode
System Message : +---------+-- | Message | . . . | 8 bits | +---------+--