game_machine 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +72 -0
- data/Rakefile +38 -0
- data/bin/game_machine +79 -0
- data/config/cluster.conf +65 -0
- data/config/config.example.yml +93 -0
- data/config/game_messages.proto +45 -0
- data/config/messages.proto +339 -0
- data/config/regions.example.yml +9 -0
- data/config/standalone.conf +36 -0
- data/db/do_not_delete +0 -0
- data/game_machine.gemspec +38 -0
- data/games/example/boot.rb +6 -0
- data/games/example/data/game_data.yml +13 -0
- data/games/example/lib/aggressive_npc.rb +176 -0
- data/games/example/lib/authentication_handler.rb +69 -0
- data/games/example/lib/chatbot.rb +61 -0
- data/games/example/lib/combat_controller.rb +145 -0
- data/games/example/lib/example_controller.rb +21 -0
- data/games/example/lib/game.rb +85 -0
- data/games/example/lib/models/attack.rb +9 -0
- data/games/example/lib/models/combat_update.rb +11 -0
- data/games/example/lib/models/player_command.rb +7 -0
- data/games/example/lib/models/user.rb +11 -0
- data/games/example/lib/models/vitals.rb +17 -0
- data/games/example/lib/npc.rb +111 -0
- data/games/example/lib/npc_group.rb +42 -0
- data/games/example/lib/npc_movement.rb +116 -0
- data/games/example/lib/player_manager.rb +58 -0
- data/games/example/lib/player_register.rb +80 -0
- data/games/example/lib/tracking_handler.rb +17 -0
- data/games/example/lib/zone_manager.rb +57 -0
- data/games/preload.rb +8 -0
- data/integration_tests/basic_spec.rb +68 -0
- data/integration_tests/bot_spec.rb +18 -0
- data/integration_tests/chat_spec.rb +45 -0
- data/integration_tests/distributed_spec.rb +34 -0
- data/integration_tests/entity_tracking_spec.rb +48 -0
- data/integration_tests/mono_spec.rb +16 -0
- data/integration_tests/objectdb_spec.rb +55 -0
- data/integration_tests/tcp_client_spec.rb +71 -0
- data/integration_tests/udp_client_spec.rb +61 -0
- data/integration_tests/udp_spec.rb +20 -0
- data/integration_tests/udt_client_spec.rb +23 -0
- data/integration_tests/udt_spec.rb +31 -0
- data/java/.gitignore +1 -0
- data/java/build.gradle +93 -0
- data/java/component.erb +396 -0
- data/java/gradle.properties +6 -0
- data/java/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/java/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/java/gradlew +164 -0
- data/java/gradlew.bat +90 -0
- data/java/local_lib/protostuff-compiler-1.0.7-jarjar.jar +0 -0
- data/java/settings.gradle +2 -0
- data/java/src/main/java/com/game_machine/core/ActorFactory.java +25 -0
- data/java/src/main/java/com/game_machine/core/ActorUtil.java +39 -0
- data/java/src/main/java/com/game_machine/core/CommandProxy.java +9 -0
- data/java/src/main/java/com/game_machine/core/EntitySerializer.java +66 -0
- data/java/src/main/java/com/game_machine/core/EventStreamHandler.java +43 -0
- data/java/src/main/java/com/game_machine/core/GameMachineLoader.java +25 -0
- data/java/src/main/java/com/game_machine/core/Grid.java +195 -0
- data/java/src/main/java/com/game_machine/core/GridValue.java +30 -0
- data/java/src/main/java/com/game_machine/core/IActorFactory.java +7 -0
- data/java/src/main/java/com/game_machine/core/NetMessage.java +28 -0
- data/java/src/main/java/com/game_machine/core/UdpServer.java +97 -0
- data/java/src/main/java/com/game_machine/core/UdpServerHandler.java +90 -0
- data/java/src/main/resources/game_machine.java.stg +738 -0
- data/java/src/main/resources/logback.xml +14 -0
- data/java/src/main/resources/logging.properties +3 -0
- data/java/src/main/resources/protostuff.properties +7 -0
- data/lib/game_machine.rb +85 -0
- data/lib/game_machine/actor.rb +7 -0
- data/lib/game_machine/actor/base.rb +184 -0
- data/lib/game_machine/actor/builder.rb +108 -0
- data/lib/game_machine/actor/development.rb +31 -0
- data/lib/game_machine/actor/factory.rb +35 -0
- data/lib/game_machine/actor/mono_actor.rb +89 -0
- data/lib/game_machine/actor/ref.rb +81 -0
- data/lib/game_machine/actor/reloadable.rb +98 -0
- data/lib/game_machine/actor/system.rb +32 -0
- data/lib/game_machine/akka.rb +98 -0
- data/lib/game_machine/app_config.rb +49 -0
- data/lib/game_machine/application.rb +181 -0
- data/lib/game_machine/auth_handlers/base.rb +21 -0
- data/lib/game_machine/auth_handlers/public.rb +34 -0
- data/lib/game_machine/bot/chat.rb +66 -0
- data/lib/game_machine/bot/client.rb +54 -0
- data/lib/game_machine/client_manager.rb +204 -0
- data/lib/game_machine/clients.rb +4 -0
- data/lib/game_machine/clients/client.rb +45 -0
- data/lib/game_machine/clients/tcp_client.rb +25 -0
- data/lib/game_machine/clients/test_client.rb +151 -0
- data/lib/game_machine/clients/udp_client.rb +25 -0
- data/lib/game_machine/clients/udt_client.rb +34 -0
- data/lib/game_machine/cluster_monitor.rb +115 -0
- data/lib/game_machine/commands.rb +23 -0
- data/lib/game_machine/commands/base.rb +21 -0
- data/lib/game_machine/commands/chat_commands.rb +88 -0
- data/lib/game_machine/commands/datastore_commands.rb +60 -0
- data/lib/game_machine/commands/grid_commands.rb +35 -0
- data/lib/game_machine/commands/message_helper.rb +25 -0
- data/lib/game_machine/commands/misc_commands.rb +29 -0
- data/lib/game_machine/commands/navigation_commands.rb +24 -0
- data/lib/game_machine/commands/player_commands.rb +28 -0
- data/lib/game_machine/commands/proxy.rb +16 -0
- data/lib/game_machine/console.rb +3 -0
- data/lib/game_machine/console/build.rb +74 -0
- data/lib/game_machine/console/install.rb +92 -0
- data/lib/game_machine/console/server.rb +120 -0
- data/lib/game_machine/data_store.rb +52 -0
- data/lib/game_machine/data_stores/couchbase.rb +18 -0
- data/lib/game_machine/data_stores/mapdb.rb +49 -0
- data/lib/game_machine/data_stores/memory.rb +35 -0
- data/lib/game_machine/data_stores/redis.rb +46 -0
- data/lib/game_machine/endpoints.rb +6 -0
- data/lib/game_machine/endpoints/mono_gateway.rb +87 -0
- data/lib/game_machine/endpoints/tcp.rb +51 -0
- data/lib/game_machine/endpoints/tcp_handler.rb +75 -0
- data/lib/game_machine/endpoints/udp.rb +88 -0
- data/lib/game_machine/endpoints/udp_incoming.rb +113 -0
- data/lib/game_machine/endpoints/udp_outgoing.rb +46 -0
- data/lib/game_machine/game_loader.rb +46 -0
- data/lib/game_machine/game_systems.rb +14 -0
- data/lib/game_machine/game_systems/agents/controller.rb +118 -0
- data/lib/game_machine/game_systems/chat.rb +256 -0
- data/lib/game_machine/game_systems/chat_manager.rb +108 -0
- data/lib/game_machine/game_systems/chat_topic.rb +36 -0
- data/lib/game_machine/game_systems/devnull.rb +13 -0
- data/lib/game_machine/game_systems/entity_loader.rb +12 -0
- data/lib/game_machine/game_systems/entity_tracking.rb +133 -0
- data/lib/game_machine/game_systems/local_echo.rb +16 -0
- data/lib/game_machine/game_systems/objectdb_proxy.rb +61 -0
- data/lib/game_machine/game_systems/private_chat.rb +20 -0
- data/lib/game_machine/game_systems/region_manager.rb +91 -0
- data/lib/game_machine/game_systems/region_service.rb +94 -0
- data/lib/game_machine/game_systems/region_settings.rb +13 -0
- data/lib/game_machine/game_systems/remote_echo.rb +14 -0
- data/lib/game_machine/game_systems/stress_test.rb +21 -0
- data/lib/game_machine/grid.rb +60 -0
- data/lib/game_machine/grid_replicator.rb +31 -0
- data/lib/game_machine/handlers/authentication.rb +55 -0
- data/lib/game_machine/handlers/game.rb +63 -0
- data/lib/game_machine/handlers/request.rb +80 -0
- data/lib/game_machine/hashring.rb +48 -0
- data/lib/game_machine/helpers/game_message.rb +159 -0
- data/lib/game_machine/helpers/state_machine.rb +29 -0
- data/lib/game_machine/java_lib.rb +51 -0
- data/lib/game_machine/logger.rb +39 -0
- data/lib/game_machine/message_buffer.rb +58 -0
- data/lib/game_machine/message_queue.rb +63 -0
- data/lib/game_machine/model.rb +125 -0
- data/lib/game_machine/models.rb +3 -0
- data/lib/game_machine/models/player_status_update.rb +8 -0
- data/lib/game_machine/models/region.rb +9 -0
- data/lib/game_machine/mono_server.rb +20 -0
- data/lib/game_machine/navigation.rb +4 -0
- data/lib/game_machine/navigation/detour.rb +20 -0
- data/lib/game_machine/navigation/detour_navmesh.rb +53 -0
- data/lib/game_machine/navigation/detour_path.rb +53 -0
- data/lib/game_machine/navigation/path.rb +31 -0
- data/lib/game_machine/object_db.rb +67 -0
- data/lib/game_machine/protobuf.rb +6 -0
- data/lib/game_machine/protobuf/game_messages.rb +24 -0
- data/lib/game_machine/protobuf/generate.rb +113 -0
- data/lib/game_machine/protobuf_extensions/entity_helper.rb +11 -0
- data/lib/game_machine/reloadable_monitor.rb +26 -0
- data/lib/game_machine/restart_watcher.rb +17 -0
- data/lib/game_machine/ruby_extensions/nilclass.rb +10 -0
- data/lib/game_machine/ruby_extensions/string.rb +17 -0
- data/lib/game_machine/scheduler.rb +23 -0
- data/lib/game_machine/securerandom.rb +6 -0
- data/lib/game_machine/settings.rb +11 -0
- data/lib/game_machine/system_monitor.rb +19 -0
- data/lib/game_machine/system_stats.rb +24 -0
- data/lib/game_machine/uniqueid.rb +23 -0
- data/lib/game_machine/vector.rb +95 -0
- data/lib/game_machine/version.rb +3 -0
- data/lib/game_machine/write_behind_cache.rb +164 -0
- data/mono/bin/csharp/common.xslt +109 -0
- data/mono/bin/csharp/csharp.xslt +628 -0
- data/mono/bin/csharp/descriptor.proto +533 -0
- data/mono/bin/csharp/protobuf-net.dll +0 -0
- data/mono/bin/csharp/protobuf-net.pdb +0 -0
- data/mono/bin/csharp/protobuf-net.xml +2879 -0
- data/mono/bin/csharp/protogen.exe.config +3 -0
- data/mono/bin/csharp/protogen.pdb +0 -0
- data/mono/bin/csharp/protogen_csharp.exe +0 -0
- data/mono/bin/csharp/vb.xslt +745 -0
- data/mono/bin/csharp/xml.xslt +26 -0
- data/mono/server/Makefile +6 -0
- data/mono/server/NLog.config +12 -0
- data/mono/server/NLog.dll +0 -0
- data/mono/server/actor.cs +37 -0
- data/mono/server/build.bat +3 -0
- data/mono/server/cscompmgd.dll +0 -0
- data/mono/server/iactor.cs +11 -0
- data/mono/server/message_router.cs +67 -0
- data/mono/server/message_util.cs +29 -0
- data/mono/server/messages.cs +1888 -0
- data/mono/server/protobuf-net.dll +0 -0
- data/mono/server/proxy_client.cs +73 -0
- data/mono/server/proxy_server.cs +30 -0
- data/mono/server/test_actor.cs +33 -0
- data/pathfinding/bin/premake4 +0 -0
- data/pathfinding/include/mesh_loader.h +28 -0
- data/pathfinding/include/pathfind.h +167 -0
- data/pathfinding/main.cpp +39 -0
- data/pathfinding/mesh_loader.cpp +108 -0
- data/pathfinding/pathfind.cpp +174 -0
- data/pathfinding/pathfinder.cs +66 -0
- data/pathfinding/premake4.lua +109 -0
- data/script/server.sh +109 -0
- data/script/watch.sh +11 -0
- data/spec/actor/actor_spec.rb +73 -0
- data/spec/actor/builder_spec.rb +56 -0
- data/spec/actor/ref_spec.rb +83 -0
- data/spec/application_spec.rb +7 -0
- data/spec/client_manager_spec.rb +171 -0
- data/spec/commands/chat_commands_spec.rb +38 -0
- data/spec/commands/datastore_commands_spec.rb +91 -0
- data/spec/commands/grid_commands_spec.rb +37 -0
- data/spec/commands/navigation_commands_spec.rb +51 -0
- data/spec/commands/player_commands_spec.rb +48 -0
- data/spec/commands_spec.rb +38 -0
- data/spec/data_stores/mapdb_spec.rb +46 -0
- data/spec/data_stores/redis_spec.rb +44 -0
- data/spec/game_systems/agents/controller_spec.rb +84 -0
- data/spec/game_systems/agents/test_agent.rb +10 -0
- data/spec/game_systems/agents/test_agent_config.rb +29 -0
- data/spec/game_systems/chat_manager_spec.rb +66 -0
- data/spec/game_systems/chat_spec.rb +187 -0
- data/spec/game_systems/entity_tracking_spec.rb +64 -0
- data/spec/game_systems/region_manager_spec.rb +138 -0
- data/spec/grid_spec.rb +37 -0
- data/spec/handlers/authentication_spec.rb +36 -0
- data/spec/handlers/game_spec.rb +49 -0
- data/spec/handlers/request_spec.rb +65 -0
- data/spec/hashring_spec.rb +59 -0
- data/spec/integration_helper.rb +120 -0
- data/spec/java_grid_spec.rb +89 -0
- data/spec/message_buffer_spec.rb +67 -0
- data/spec/message_expectations.rb +47 -0
- data/spec/message_queue_spec.rb +23 -0
- data/spec/misc_spec.rb +71 -0
- data/spec/model_spec.rb +103 -0
- data/spec/mono_spec.rb +36 -0
- data/spec/mono_test.rb +18 -0
- data/spec/navigation/detour_navmesh_spec.rb +34 -0
- data/spec/navigation/detour_path_spec.rb +25 -0
- data/spec/spec_helper.rb +40 -0
- data/spec/udp_server_spec.rb +10 -0
- data/spec/write_behind_cache_spec.rb +109 -0
- data/web/app.rb +131 -0
- data/web/config/trinidad.yml +4 -0
- data/web/controllers/auth_controller.rb +19 -0
- data/web/controllers/base_controller.rb +16 -0
- data/web/controllers/index_controller.rb +7 -0
- data/web/controllers/log_controller.rb +47 -0
- data/web/controllers/messages_controller.rb +59 -0
- data/web/controllers/player_register_controller.rb +15 -0
- data/web/log/development.log +1339 -0
- data/web/tmp/restart.txt +0 -0
- data/web/views/game_messages.haml +45 -0
- data/web/views/index.haml +6 -0
- data/web/views/layout.haml +41 -0
- data/web/views/logs.haml +32 -0
- data/web/views/player_register.haml +22 -0
- data/web/views/player_registered.haml +2 -0
- data/web/views/register_layout.haml +22 -0
- data/web/views/restart.haml +35 -0
- metadata +576 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0bdc1f292f01c6341bf168511d642306d1bd4842
|
4
|
+
data.tar.gz: 76cac922f01f09c59150b5f58bf797e06bf66bcc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4d7aa754c530d15ea986fd178ac128d0f0eb1df77ecaf6d362c39685f1bc7753f4bf8de9f74ba1f907a96fa97c230698e3e8bdd7e652ea5f0de336804b613782
|
7
|
+
data.tar.gz: 0a0a74f1fe8cc73266d0db7cd88fb61c740a21788f6c3c2d29c91e3769afbd0f522f265fceca716fb5f4cbccdd30c9eb0ecdca67b86d09aa4edc56a674f4ed15
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
game_machine (0.0.5)
|
5
|
+
consistent-hashing
|
6
|
+
ffi
|
7
|
+
haml
|
8
|
+
i18n
|
9
|
+
json
|
10
|
+
rjack-logback
|
11
|
+
settingslogic
|
12
|
+
sinatra
|
13
|
+
sinatra-contrib
|
14
|
+
webrick
|
15
|
+
|
16
|
+
GEM
|
17
|
+
remote: https://rubygems.org/
|
18
|
+
specs:
|
19
|
+
avl_tree (1.1.3)
|
20
|
+
backports (3.6.0)
|
21
|
+
consistent-hashing (1.0.0)
|
22
|
+
avl_tree (>= 1.1.3)
|
23
|
+
descriptive_statistics (1.1.2)
|
24
|
+
diff-lcs (1.2.5)
|
25
|
+
ffi (1.9.3-java)
|
26
|
+
haml (4.0.5)
|
27
|
+
tilt
|
28
|
+
i18n (0.6.9)
|
29
|
+
json (1.8.1-java)
|
30
|
+
multi_json (1.10.1)
|
31
|
+
rack (1.5.2)
|
32
|
+
rack-protection (1.5.3)
|
33
|
+
rack
|
34
|
+
rack-test (0.6.2)
|
35
|
+
rack (>= 1.0)
|
36
|
+
rake (10.1.0)
|
37
|
+
rjack-logback (1.7.0-java)
|
38
|
+
rjack-slf4j (>= 1.6.5, < 1.8)
|
39
|
+
rjack-slf4j (1.7.6.0-java)
|
40
|
+
rspec (2.14.1)
|
41
|
+
rspec-core (~> 2.14.0)
|
42
|
+
rspec-expectations (~> 2.14.0)
|
43
|
+
rspec-mocks (~> 2.14.0)
|
44
|
+
rspec-core (2.14.7)
|
45
|
+
rspec-expectations (2.14.4)
|
46
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
47
|
+
rspec-mocks (2.14.4)
|
48
|
+
settingslogic (2.0.9)
|
49
|
+
sinatra (1.4.5)
|
50
|
+
rack (~> 1.4)
|
51
|
+
rack-protection (~> 1.4)
|
52
|
+
tilt (~> 1.3, >= 1.3.4)
|
53
|
+
sinatra-contrib (1.4.2)
|
54
|
+
backports (>= 2.0)
|
55
|
+
multi_json
|
56
|
+
rack-protection
|
57
|
+
rack-test
|
58
|
+
sinatra (~> 1.4.0)
|
59
|
+
tilt (~> 1.3)
|
60
|
+
tilt (1.4.1)
|
61
|
+
webrick (1.3.1)
|
62
|
+
|
63
|
+
PLATFORMS
|
64
|
+
java
|
65
|
+
|
66
|
+
DEPENDENCIES
|
67
|
+
descriptive_statistics
|
68
|
+
game_machine!
|
69
|
+
rake
|
70
|
+
rspec
|
71
|
+
rspec-expectations
|
72
|
+
rspec-mocks
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
|
3
|
+
specfile = File.join(File.dirname(__FILE__), 'game_machine.gemspec')
|
4
|
+
if File.exists?(specfile)
|
5
|
+
require "bundler/gem_tasks"
|
6
|
+
end
|
7
|
+
|
8
|
+
RSpec::Core::RakeTask.new
|
9
|
+
|
10
|
+
task :default => :spec
|
11
|
+
|
12
|
+
namespace :game do
|
13
|
+
task :demo do
|
14
|
+
cp 'lib/demo/boot.rb', 'boot.rb'
|
15
|
+
end
|
16
|
+
|
17
|
+
task :none do
|
18
|
+
rm 'boot.rb'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
namespace :java do
|
23
|
+
gradlew = File.join(File.dirname(__FILE__), 'java','gradlew')
|
24
|
+
|
25
|
+
task :clean do
|
26
|
+
FileUtils.rm_f 'java/lib/*.jar'
|
27
|
+
FileUtils.rm_f 'java/src/main/java/com/game_machine/entity_system/generated/*.java'
|
28
|
+
end
|
29
|
+
|
30
|
+
task :all => [:clean] do
|
31
|
+
system "cd java && #{gradlew} clean && #{gradlew} codegen && #{gradlew} build && #{gradlew} install_libs"
|
32
|
+
end
|
33
|
+
|
34
|
+
task :build do
|
35
|
+
system "cd java && #{gradlew} build && #{gradlew} install_libs"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
data/bin/game_machine
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
#!/usr/bin/env jruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
def load_game_machine
|
7
|
+
begin
|
8
|
+
require 'game_machine'
|
9
|
+
rescue LoadError
|
10
|
+
require_relative '../lib/game_machine'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
ARGV << '--help' if ARGV.empty?
|
15
|
+
|
16
|
+
aliases = {
|
17
|
+
"n" => "new",
|
18
|
+
"b" => "build",
|
19
|
+
"s" => "server",
|
20
|
+
"sl" => "server_loop"
|
21
|
+
}
|
22
|
+
|
23
|
+
command = ARGV.shift
|
24
|
+
command = aliases[command] || command
|
25
|
+
|
26
|
+
ENV['APP_ROOT'] ||= File.expand_path(Dir.pwd)
|
27
|
+
ENV['JAVA_ROOT'] = File.join(ENV['APP_ROOT'],'java')
|
28
|
+
ENV['GAME_ENV'] = 'development'
|
29
|
+
|
30
|
+
require_relative '../lib/game_machine/console'
|
31
|
+
|
32
|
+
if command == 'new'
|
33
|
+
bin_path = File.dirname(__FILE__)
|
34
|
+
install_source_path = File.expand_path(
|
35
|
+
File.join(bin_path,'../')
|
36
|
+
)
|
37
|
+
GameMachine::Console::Install.new(ARGV,install_source_path).run!
|
38
|
+
|
39
|
+
elsif command == 'build'
|
40
|
+
require_relative '../java/local_lib/protostuff-compiler-1.0.7-jarjar.jar'
|
41
|
+
require_relative '../lib/game_machine/protobuf/game_messages.rb'
|
42
|
+
require_relative '../lib/game_machine/protobuf/generate.rb'
|
43
|
+
GameMachine::Console::Build.new(ARGV).run!
|
44
|
+
|
45
|
+
elsif command == 'server'
|
46
|
+
# Need to set environment vars before loading everything.
|
47
|
+
server = GameMachine::Console::Server.new(ARGV)
|
48
|
+
server.set_environment
|
49
|
+
load_game_machine
|
50
|
+
|
51
|
+
# Run the server
|
52
|
+
server.run!
|
53
|
+
|
54
|
+
elsif command == 'server_loop'
|
55
|
+
GameMachine::Console::Server.run_in_loop
|
56
|
+
else
|
57
|
+
|
58
|
+
puts <<EOF
|
59
|
+
Usage:
|
60
|
+
|
61
|
+
game_machine server [options] Start the server
|
62
|
+
-r, --restartable If tmp/gm_restart.txt should trigger a restart
|
63
|
+
-s, --server=name Server name
|
64
|
+
-c, --config=name Configuration file
|
65
|
+
-e, --environment=name Specifies the environment to run under (development/production).
|
66
|
+
Default: development
|
67
|
+
|
68
|
+
game_machine server_loop Runs server in loop that restarts when tmp/gm_restart.txt
|
69
|
+
is present. On restart it will run build then server -r.
|
70
|
+
|
71
|
+
game_machine build Generate and compile protobuf messages
|
72
|
+
|
73
|
+
game_machine new [path] Create a new Game Machine application at the
|
74
|
+
specified path
|
75
|
+
|
76
|
+
EOF
|
77
|
+
end
|
78
|
+
|
79
|
+
|
data/config/cluster.conf
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
cluster {
|
4
|
+
|
5
|
+
default-pinned-dispatcher {
|
6
|
+
executor = thread-pool-executor
|
7
|
+
type = PinnedDispatcher
|
8
|
+
thread-pool-executor.keep-alive-time = 315360000s
|
9
|
+
# note that disabling core timeout altogether doesn't work
|
10
|
+
# until ticket 2856 is fixed
|
11
|
+
thread-pool-executor.allow-core-timeout = off
|
12
|
+
}
|
13
|
+
|
14
|
+
akka {
|
15
|
+
|
16
|
+
cluster {
|
17
|
+
seed-nodes = [SEEDS]
|
18
|
+
acceptable-heartbeat-pause = 10 s
|
19
|
+
auto-down-unreachable-after = 10s
|
20
|
+
}
|
21
|
+
|
22
|
+
actor.debug.unhandled = "on"
|
23
|
+
jvm-exit-on-fatal-error=false
|
24
|
+
loglevel = "WARNING"
|
25
|
+
|
26
|
+
actor {
|
27
|
+
serializers {
|
28
|
+
java = "akka.serialization.JavaSerializer"
|
29
|
+
bytes = "akka.serialization.ByteArraySerializer"
|
30
|
+
myown = "com.game_machine.core.EntitySerializer"
|
31
|
+
}
|
32
|
+
|
33
|
+
serialization-bindings {
|
34
|
+
"[B" = bytes
|
35
|
+
"java.io.Serializable" = java
|
36
|
+
"com.dyuproject.protostuff.Message" = myown
|
37
|
+
"GameMachine.Messages.ClientMessage" = myown
|
38
|
+
"GameMachine.Messages.Entity" = myown
|
39
|
+
"GameMachine.Messages.ObjectdbGet" = myown
|
40
|
+
"GameMachine.Messages.ObjectdbPut" = myown
|
41
|
+
"GameMachine.Messages.ObjectdbUpdate" = myown
|
42
|
+
}
|
43
|
+
provider = "akka.cluster.ClusterActorRefProvider"
|
44
|
+
#serialize-messages = on
|
45
|
+
#serialize-creators = on
|
46
|
+
}
|
47
|
+
remote {
|
48
|
+
log-remote-lifecycle-events = off
|
49
|
+
|
50
|
+
|
51
|
+
#enabled-transports = ["akka.remote.netty.tcp"]
|
52
|
+
netty.tcp {
|
53
|
+
hostname = "HOST"
|
54
|
+
port = PORT
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
akka.actor.deployment {
|
60
|
+
/inbound {
|
61
|
+
router = round-robin
|
62
|
+
nr-of-instances = 10
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
---
|
2
|
+
development:
|
3
|
+
servers:
|
4
|
+
default:
|
5
|
+
environment: development
|
6
|
+
# Authorization handler. Public allows any authtoken to be used and
|
7
|
+
# does not check username/password
|
8
|
+
auth_handler: Example::AuthenticationHandler
|
9
|
+
#auth_handler: GameMachine::AuthHandlers::Public
|
10
|
+
# Class that handles user registration via web page
|
11
|
+
player_register_handler: Example::PlayerRegister
|
12
|
+
# Player manager. Receives player status updates
|
13
|
+
player_manager: Example::PlayerManager
|
14
|
+
# Top level actor that handles game messages. Don't change this
|
15
|
+
game_handler: GameMachine::Handlers::Request
|
16
|
+
# Hook for accessing location updates from players (cheat prevention)
|
17
|
+
entity_tracking_handler: Example::TrackingHandler
|
18
|
+
# Size of the router for incoming message from all clients
|
19
|
+
game_handler_routers: 10
|
20
|
+
# Also in the pipeline for all incoming requests, should be set the same as
|
21
|
+
# game_handler_routers
|
22
|
+
request_handler_routers: 10
|
23
|
+
# router size for the udp actor that handles all incoming upd messages
|
24
|
+
udp_routers: 10
|
25
|
+
# What data store the object database will use (one of memory, mapdb, or couchbase)
|
26
|
+
data_store: memory
|
27
|
+
# Advanced settings for write behind cache. -1 disables. This is fine for
|
28
|
+
# all but large games with high traffic (hundreds of writes per second)
|
29
|
+
cache_write_interval: -1
|
30
|
+
cache_writes_per_second: -1
|
31
|
+
# Spatial grids. default, aoe, and local_chat are required.
|
32
|
+
# value is grid size, cell size, and update frequency
|
33
|
+
grids:
|
34
|
+
default: 4000, 50, 1
|
35
|
+
aoe: 4000, 5, 1
|
36
|
+
local_chat: 4000, 10, 10
|
37
|
+
# Couchbase config
|
38
|
+
couchbase_servers:
|
39
|
+
- http://127.0.0.1:8091/pools
|
40
|
+
#auth_handler: Example::AuthenticationHandler
|
41
|
+
http_enabled: true
|
42
|
+
http_host: 0.0.0.0
|
43
|
+
http_port: 3000
|
44
|
+
udp_enabled: true
|
45
|
+
udp_host: 0.0.0.0
|
46
|
+
udp_port: 24130
|
47
|
+
tcp_enabled: true
|
48
|
+
tcp_host: 0.0.0.0
|
49
|
+
tcp_port: 8700
|
50
|
+
akka_host: 127.0.0.1
|
51
|
+
akka_port: 2551
|
52
|
+
# array of seed servers. Required if node is in a cluster
|
53
|
+
seeds: [default,seed01]
|
54
|
+
# Mono server settings
|
55
|
+
mono_enabled: false
|
56
|
+
mono_dll: test_actor.dll
|
57
|
+
mono_gateway_host: 127.0.0.1
|
58
|
+
mono_gateway_port: 8800
|
59
|
+
seed01:
|
60
|
+
environment: development
|
61
|
+
auth_handler: Example::AuthenticationHandler
|
62
|
+
player_register_handler: Example::PlayerRegister
|
63
|
+
player_manager: Example::PlayerManager
|
64
|
+
game_handler: GameMachine::Handlers::Request
|
65
|
+
entity_tracking_handler: Example::TrackingHandler
|
66
|
+
game_handler_routers: 10
|
67
|
+
request_handler_routers: 10
|
68
|
+
udp_routers: 10
|
69
|
+
data_store: memory
|
70
|
+
cache_write_interval: -1
|
71
|
+
cache_writes_per_second: -1
|
72
|
+
grids:
|
73
|
+
default: 4000, 50, 1
|
74
|
+
aoe: 4000, 5, 1
|
75
|
+
local_chat: 4000, 10, 10
|
76
|
+
couchbase_servers:
|
77
|
+
- http://127.0.0.1:8091/pools
|
78
|
+
http_enabled: false
|
79
|
+
http_host: 127.0.0.1
|
80
|
+
http_port: 3000
|
81
|
+
udp_enabled: true
|
82
|
+
udp_host: 0.0.0.0
|
83
|
+
udp_port: 24130
|
84
|
+
tcp_enabled: false
|
85
|
+
tcp_host: 0.0.0.0
|
86
|
+
tcp_port: 8700
|
87
|
+
akka_host: 127.0.0.1
|
88
|
+
akka_port: 2551
|
89
|
+
seeds: [default,seed01]
|
90
|
+
mono_enabled: false
|
91
|
+
mono_dll: test_actor.dll
|
92
|
+
mono_gateway_host: 127.0.0.1
|
93
|
+
mono_gateway_port: 8800
|
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
// Used to by the entity tracking system to attack additional fields to your
|
3
|
+
// tracking updates. You can change any of the fields in TrackExtra to suit your
|
4
|
+
// needs, but do NOT remove the message definition!
|
5
|
+
|
6
|
+
message TrackExtra {
|
7
|
+
optional float speed = 1;
|
8
|
+
optional float velocity = 2;
|
9
|
+
optional Vector3 direction = 3;
|
10
|
+
}
|
11
|
+
|
12
|
+
message Health {
|
13
|
+
required int32 health = 1;
|
14
|
+
}
|
15
|
+
|
16
|
+
message Effect {
|
17
|
+
optional int32 length = 1;
|
18
|
+
optional string name = 2;
|
19
|
+
optional int32 healthDiff = 3;
|
20
|
+
optional int32 damageDiff = 4;
|
21
|
+
optional int32 timePeriod = 5;
|
22
|
+
optional string type = 6;
|
23
|
+
}
|
24
|
+
|
25
|
+
message EffectList {
|
26
|
+
repeated Effect effect = 1;
|
27
|
+
}
|
28
|
+
|
29
|
+
message CombatAbility {
|
30
|
+
required string name = 1;
|
31
|
+
required int32 damage = 2;
|
32
|
+
optional int32 hitChance = 3;
|
33
|
+
required int32 range = 4;
|
34
|
+
optional string type = 5;
|
35
|
+
}
|
36
|
+
|
37
|
+
message Attack {
|
38
|
+
required string attacker = 1;
|
39
|
+
required string target = 2;
|
40
|
+
optional int32 combatAbilityId = 3;
|
41
|
+
}
|
42
|
+
|
43
|
+
message IsPlayer {
|
44
|
+
optional bool enabled = 1;
|
45
|
+
}
|
@@ -0,0 +1,339 @@
|
|
1
|
+
package GameMachine.Messages;
|
2
|
+
option optimize_for = SPEED;
|
3
|
+
|
4
|
+
//GAME_MESSAGES
|
5
|
+
|
6
|
+
message Rpc {
|
7
|
+
required string method = 1;
|
8
|
+
repeated string arguments = 2;
|
9
|
+
optional bool returnValue = 3;
|
10
|
+
}
|
11
|
+
|
12
|
+
message MessageEnvelope {
|
13
|
+
required string name = 1;
|
14
|
+
optional string server = 2;
|
15
|
+
optional string id = 3;
|
16
|
+
required string type = 4;
|
17
|
+
}
|
18
|
+
|
19
|
+
message TrackEntity {
|
20
|
+
required bool value = 1;
|
21
|
+
optional bool internal = 2;
|
22
|
+
optional TrackExtra trackExtra = 3;
|
23
|
+
}
|
24
|
+
|
25
|
+
message PlayerLogout {
|
26
|
+
required string playerId = 1;
|
27
|
+
optional string authtoken = 2;
|
28
|
+
}
|
29
|
+
|
30
|
+
message PlayerConnect {}
|
31
|
+
message PlayerConnected {}
|
32
|
+
|
33
|
+
message PlayerAuthenticated {
|
34
|
+
required string playerId = 1;
|
35
|
+
}
|
36
|
+
|
37
|
+
message ErrorMessage {
|
38
|
+
required string code = 1;
|
39
|
+
required string message = 2;
|
40
|
+
}
|
41
|
+
|
42
|
+
message ChatInvite {
|
43
|
+
required string invitee = 1;
|
44
|
+
required string inviter = 2;
|
45
|
+
required string channelName = 4;
|
46
|
+
required string invite_id = 5;
|
47
|
+
}
|
48
|
+
|
49
|
+
message ChatBanned {
|
50
|
+
required string banned_id = 1;
|
51
|
+
required string channelNname = 2;
|
52
|
+
optional string reason = 3;
|
53
|
+
}
|
54
|
+
|
55
|
+
message ChatBannedList {
|
56
|
+
repeated ChatBanned chatBanned = 1;
|
57
|
+
}
|
58
|
+
|
59
|
+
message ChatChannels {
|
60
|
+
repeated ChatChannel chatChannel = 1;
|
61
|
+
}
|
62
|
+
|
63
|
+
message ChatChannel {
|
64
|
+
required string name = 1;
|
65
|
+
optional Subscribers subscribers = 2;
|
66
|
+
optional string flags = 3;
|
67
|
+
optional string invite_id = 5;
|
68
|
+
}
|
69
|
+
|
70
|
+
message ChatRegister {
|
71
|
+
required string chatId = 1;
|
72
|
+
required string registerAs = 2;
|
73
|
+
}
|
74
|
+
|
75
|
+
message JoinChat {
|
76
|
+
repeated ChatChannel chatChannel = 1;
|
77
|
+
}
|
78
|
+
|
79
|
+
message LeaveChat {
|
80
|
+
repeated ChatChannel chatChannel = 1;
|
81
|
+
}
|
82
|
+
|
83
|
+
message ChatMessage {
|
84
|
+
required ChatChannel chatChannel = 1;
|
85
|
+
required string message = 2;
|
86
|
+
required string type = 3;
|
87
|
+
optional string senderId = 4;
|
88
|
+
optional Entity entity = 5;
|
89
|
+
}
|
90
|
+
|
91
|
+
message ChatStatus {
|
92
|
+
}
|
93
|
+
|
94
|
+
message ClientEvent {
|
95
|
+
required string event = 1;
|
96
|
+
required string clientId = 2;
|
97
|
+
required string senderId = 3;
|
98
|
+
optional string playerId = 4;
|
99
|
+
}
|
100
|
+
|
101
|
+
message ClientEvents {
|
102
|
+
repeated ClientEvent clientEvent = 1;
|
103
|
+
}
|
104
|
+
|
105
|
+
message ClientManagerUnregister {
|
106
|
+
optional string registerType = 1;
|
107
|
+
optional string name = 2;
|
108
|
+
}
|
109
|
+
|
110
|
+
message ClientManagerRegister {
|
111
|
+
optional string events = 1;
|
112
|
+
optional string registerType = 2;
|
113
|
+
optional string name = 3;
|
114
|
+
}
|
115
|
+
|
116
|
+
message ClientManagerEvent {
|
117
|
+
required string client_id = 1;
|
118
|
+
required string player_id = 2;
|
119
|
+
required string event = 3;
|
120
|
+
}
|
121
|
+
|
122
|
+
message Subscribers {
|
123
|
+
repeated string subscriberId = 1;
|
124
|
+
}
|
125
|
+
|
126
|
+
message Subscribe {
|
127
|
+
optional string topic = 1;
|
128
|
+
}
|
129
|
+
|
130
|
+
message Unsubscribe {
|
131
|
+
required string topic = 1;
|
132
|
+
}
|
133
|
+
|
134
|
+
message Publish {
|
135
|
+
optional string topic = 1;
|
136
|
+
required Entity message = 2;
|
137
|
+
optional string path = 3;
|
138
|
+
}
|
139
|
+
|
140
|
+
message ObjectdbDel {
|
141
|
+
required string entityId = 1;
|
142
|
+
}
|
143
|
+
|
144
|
+
message ObjectdbGet {
|
145
|
+
required string entityId = 1;
|
146
|
+
optional string playerId = 2;
|
147
|
+
}
|
148
|
+
|
149
|
+
message ObjectdbGetResponse {
|
150
|
+
required bool entityFound = 1;
|
151
|
+
}
|
152
|
+
|
153
|
+
message ObjectdbPut {
|
154
|
+
required Entity entity = 1;
|
155
|
+
}
|
156
|
+
|
157
|
+
message ObjectdbUpdate {
|
158
|
+
required string currentEntityId = 1;
|
159
|
+
optional string updateClass = 2;
|
160
|
+
required string updateMethod = 3;
|
161
|
+
required Entity updateEntity = 4;
|
162
|
+
}
|
163
|
+
|
164
|
+
message ClientConnection {
|
165
|
+
required string id = 1;
|
166
|
+
optional string gateway = 2;
|
167
|
+
optional string server = 3;
|
168
|
+
optional string type = 4;
|
169
|
+
}
|
170
|
+
|
171
|
+
message Name {
|
172
|
+
required string value = 1;
|
173
|
+
}
|
174
|
+
|
175
|
+
message IsNpc {
|
176
|
+
required bool enabled = 1;
|
177
|
+
}
|
178
|
+
|
179
|
+
message Player {
|
180
|
+
required string id = 1;
|
181
|
+
optional string name = 2;
|
182
|
+
optional bool authenticated = 3;
|
183
|
+
optional string authtoken = 4;
|
184
|
+
optional Transform transform = 5;
|
185
|
+
}
|
186
|
+
|
187
|
+
message Vector3 {
|
188
|
+
optional float x = 1;
|
189
|
+
optional float y = 2;
|
190
|
+
optional float z = 3;
|
191
|
+
optional int32 xi = 4;
|
192
|
+
optional int32 yi = 5;
|
193
|
+
optional int32 zi = 6;
|
194
|
+
}
|
195
|
+
|
196
|
+
message Quaternion {
|
197
|
+
optional float w = 1;
|
198
|
+
optional float x = 2;
|
199
|
+
optional float y = 3;
|
200
|
+
optional float z = 4;
|
201
|
+
optional int32 wi = 5;
|
202
|
+
optional int32 xi = 6;
|
203
|
+
optional int32 yi = 7;
|
204
|
+
optional int32 zi = 8;
|
205
|
+
}
|
206
|
+
|
207
|
+
message Transform {
|
208
|
+
optional Vector3 vector3 = 1;
|
209
|
+
optional Quaternion quaternion = 2;
|
210
|
+
}
|
211
|
+
|
212
|
+
message EchoTest {
|
213
|
+
required string message = 1;
|
214
|
+
}
|
215
|
+
|
216
|
+
message TestObject {
|
217
|
+
optional string optionalString = 1;
|
218
|
+
required string requiredString = 2;
|
219
|
+
repeated int32 numbers = 3;
|
220
|
+
optional bytes bstring = 4;
|
221
|
+
optional bool bvalue = 5;
|
222
|
+
optional double dvalue = 6;
|
223
|
+
optional float fvalue = 7;
|
224
|
+
optional int64 numbers64 = 8;
|
225
|
+
repeated Player player = 9;
|
226
|
+
enum Corpus {
|
227
|
+
UNIVERSAL = 0;
|
228
|
+
WEB = 1;
|
229
|
+
IMAGES = 2;
|
230
|
+
LOCAL = 3;
|
231
|
+
NEWS = 4;
|
232
|
+
PRODUCTS = 5;
|
233
|
+
VIDEO = 6;
|
234
|
+
}
|
235
|
+
optional Corpus corpus = 10;
|
236
|
+
repeated Corpus corpus2 = 11;
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
message Neighbors {
|
241
|
+
repeated Entity entity = 1;
|
242
|
+
}
|
243
|
+
|
244
|
+
message GetNeighbors {
|
245
|
+
optional uint32 search_radius = 2;
|
246
|
+
required Vector3 vector3 = 3;
|
247
|
+
optional string neighborType = 4;
|
248
|
+
optional string gridName = 5;
|
249
|
+
}
|
250
|
+
|
251
|
+
message MessageRouting {
|
252
|
+
optional string destination = 1;
|
253
|
+
optional string senderId = 2;
|
254
|
+
optional string id = 3;
|
255
|
+
}
|
256
|
+
|
257
|
+
message NativeBytes {
|
258
|
+
required bytes bytes = 1;
|
259
|
+
}
|
260
|
+
|
261
|
+
message JsonEntity {
|
262
|
+
required string json = 1;
|
263
|
+
optional string klass = 2;
|
264
|
+
}
|
265
|
+
|
266
|
+
message JsonStorage {
|
267
|
+
required string json = 1;
|
268
|
+
}
|
269
|
+
|
270
|
+
message Regions {
|
271
|
+
required string regions = 1;
|
272
|
+
}
|
273
|
+
|
274
|
+
message Entity {
|
275
|
+
optional Player player = 1;
|
276
|
+
optional Neighbors neighbors = 2;
|
277
|
+
optional MessageEnvelope messageEnvelope = 3;
|
278
|
+
optional ChatMessage chatMessage = 4;
|
279
|
+
optional ClientConnection clientConnection = 5;
|
280
|
+
optional EchoTest echoTest = 6;
|
281
|
+
required string id = 7;
|
282
|
+
optional Subscribe subscribe = 9;
|
283
|
+
optional Publish publish = 10;
|
284
|
+
optional ChatChannel chatChannel = 11;
|
285
|
+
optional JoinChat joinChat = 12;
|
286
|
+
optional LeaveChat leaveChat = 13;
|
287
|
+
optional Unsubscribe unsubscribe = 14;
|
288
|
+
optional ChatRegister chatRegister = 15;
|
289
|
+
optional ChatChannels chatChannels = 16;
|
290
|
+
optional ErrorMessage errorMessage = 17;
|
291
|
+
optional GetNeighbors getNeighbors = 21;
|
292
|
+
optional TrackEntity trackEntity = 22;
|
293
|
+
optional Transform transform = 23;
|
294
|
+
optional IsNpc isNpc = 24;
|
295
|
+
optional Vector3 vector3 = 25;
|
296
|
+
optional EntityList entityList = 27;
|
297
|
+
optional bool published = 29;
|
298
|
+
optional string entityType = 30;
|
299
|
+
optional PlayerAuthenticated playerAuthenticated = 37;
|
300
|
+
optional PlayerLogout playerLogout = 38;
|
301
|
+
optional bool sendToPlayer = 39;
|
302
|
+
optional Rpc rpc = 40;
|
303
|
+
optional Subscribers subscribers = 41;
|
304
|
+
optional bool save = 42;
|
305
|
+
optional MessageRouting messageRouting = 43;
|
306
|
+
optional ObjectdbGetResponse objectdbGetResponse = 44;
|
307
|
+
optional NativeBytes nativeBytes = 45;
|
308
|
+
optional ObjectdbGet objectdbGet = 46;
|
309
|
+
optional JsonEntity jsonEntity = 47;
|
310
|
+
optional string destination = 48;
|
311
|
+
optional bool json = 49;
|
312
|
+
optional string params = 50;
|
313
|
+
optional ChatStatus chatStatus = 51;
|
314
|
+
optional ChatBannedList chatBannedList = 52;
|
315
|
+
optional ChatInvite chatInvite = 53;
|
316
|
+
optional ClientManagerRegister clientManagerRegister = 54;
|
317
|
+
optional ClientManagerUnregister clientManagerUnregister = 55;
|
318
|
+
optional ClientEvent clientEvent = 56;
|
319
|
+
optional ClientEvents clientEvents = 57;
|
320
|
+
optional JsonStorage jsonStorage = 58;
|
321
|
+
optional ClientManagerEvent clientManagerEvent = 59;
|
322
|
+
optional Regions regions = 60;
|
323
|
+
//GAME_ENTITY_MESSAGES
|
324
|
+
}
|
325
|
+
|
326
|
+
message EntityList {
|
327
|
+
repeated Entity entity = 1;
|
328
|
+
}
|
329
|
+
|
330
|
+
message ClientMessage {
|
331
|
+
repeated Entity entity = 1;
|
332
|
+
optional Player player = 2;
|
333
|
+
optional ClientConnection clientConnection = 4;
|
334
|
+
optional PlayerLogout playerLogout = 5;
|
335
|
+
optional ErrorMessage errorMessage = 6;
|
336
|
+
optional PlayerConnect playerConnect = 7;
|
337
|
+
optional PlayerConnected playerConnected = 8;
|
338
|
+
optional int32 connection_type = 9;
|
339
|
+
}
|