game_machine 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +13 -9
- data/config/config.example.yml +8 -1
- data/config/game_messages.proto +1 -0
- data/config/messages.proto +4 -0
- data/games/example/lib/npc.rb +8 -7
- data/games/models.rb +3 -0
- data/games/models/clan_member.rb +8 -0
- data/games/models/clan_profile.rb +9 -0
- data/games/models/player.rb +7 -0
- data/games/plugins.rb +1 -0
- data/games/plugins/team_handler.rb +49 -0
- data/games/preload.rb +5 -0
- data/java/build.gradle +3 -1
- data/java/gradle.properties +1 -1
- data/lib/game_machine/actor/base.rb +5 -1
- data/lib/game_machine/application.rb +13 -3
- data/lib/game_machine/commands/datastore_commands.rb +3 -7
- data/lib/game_machine/commands/player_commands.rb +3 -0
- data/lib/game_machine/data_store.rb +22 -1
- data/lib/game_machine/data_stores/couchbase.rb +18 -1
- data/lib/game_machine/endpoints/udp_incoming.rb +0 -1
- data/lib/game_machine/game_systems.rb +2 -0
- data/lib/game_machine/game_systems/chat.rb +33 -13
- data/lib/game_machine/game_systems/chat_manager.rb +24 -3
- data/lib/game_machine/game_systems/json_model_persistence.rb +23 -0
- data/lib/game_machine/game_systems/region_manager.rb +1 -1
- data/lib/game_machine/game_systems/team_manager.rb +421 -0
- data/lib/game_machine/handlers/request.rb +4 -0
- data/lib/game_machine/model.rb +59 -13
- data/lib/game_machine/models.rb +17 -0
- data/lib/game_machine/models/create_team.rb +9 -0
- data/lib/game_machine/models/destroy_team.rb +8 -0
- data/lib/game_machine/models/echo_test.rb +6 -0
- data/lib/game_machine/models/end_match.rb +7 -0
- data/lib/game_machine/models/find_match.rb +7 -0
- data/lib/game_machine/models/join_team.rb +7 -0
- data/lib/game_machine/models/leave_team.rb +7 -0
- data/lib/game_machine/models/match.rb +9 -0
- data/lib/game_machine/models/player_team.rb +9 -0
- data/lib/game_machine/models/start_match.rb +8 -0
- data/lib/game_machine/models/team.rb +11 -0
- data/lib/game_machine/models/team_accept_invite.rb +9 -0
- data/lib/game_machine/models/team_invite.rb +8 -0
- data/lib/game_machine/models/team_joined.rb +7 -0
- data/lib/game_machine/models/team_left.rb +7 -0
- data/lib/game_machine/models/teams.rb +7 -0
- data/lib/game_machine/models/teams_request.rb +6 -0
- data/lib/game_machine/object_db.rb +17 -11
- data/lib/game_machine/version.rb +1 -1
- data/lib/game_machine/write_behind_cache.rb +1 -1
- data/spec/actor/actor_spec.rb +5 -5
- data/spec/actor/ref_spec.rb +10 -10
- data/spec/client_manager_spec.rb +9 -9
- data/spec/commands/chat_commands_spec.rb +1 -1
- data/spec/commands/datastore_commands_spec.rb +10 -14
- data/spec/commands/navigation_commands_spec.rb +3 -3
- data/spec/commands/player_commands_spec.rb +1 -1
- data/spec/game_systems/agents/controller_spec.rb +6 -6
- data/spec/game_systems/chat_manager_spec.rb +1 -1
- data/spec/game_systems/chat_spec.rb +15 -17
- data/spec/game_systems/region_manager_spec.rb +31 -21
- data/spec/game_systems/team_manager_spec.rb +291 -0
- data/spec/grid_spec.rb +11 -1
- data/spec/handlers/authentication_spec.rb +1 -10
- data/spec/handlers/game_spec.rb +2 -2
- data/spec/handlers/request_spec.rb +10 -21
- data/spec/hashring_spec.rb +11 -11
- data/spec/java_grid_spec.rb +1 -1
- data/spec/misc_spec.rb +2 -2
- data/spec/model_spec.rb +26 -14
- data/spec/write_behind_cache_spec.rb +15 -15
- metadata +29 -8
- data/lib/game_machine/bot/chat.rb +0 -66
- data/lib/game_machine/bot/client.rb +0 -54
- data/spec/data_stores/mapdb_spec.rb +0 -46
- data/spec/data_stores/redis_spec.rb +0 -44
@@ -1,66 +0,0 @@
|
|
1
|
-
module GameMachine
|
2
|
-
module Bot
|
3
|
-
class Chat < Actor::Base
|
4
|
-
|
5
|
-
CHAT_CHANNELS = ['region','global','help','group1']
|
6
|
-
|
7
|
-
def post_init(*args)
|
8
|
-
@client = args.first
|
9
|
-
@ctx = args[1]
|
10
|
-
@player_id = args[2]
|
11
|
-
@scheduler = get_context.system.scheduler
|
12
|
-
@dispatcher = get_context.system.dispatcher
|
13
|
-
#login
|
14
|
-
join_chat_groups
|
15
|
-
#schedule_activities
|
16
|
-
#echo
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
def schedule_activities
|
21
|
-
sleep(rand(10))
|
22
|
-
duration = JavaLib::Duration.create(rand(10) + 1, java.util.concurrent.TimeUnit::SECONDS)
|
23
|
-
@scheduler.schedule(duration, duration, get_self, "send_chat_message", @dispatcher, nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
def echo
|
27
|
-
message = GameMachine::Helpers::GameMessage.new(@player_id)
|
28
|
-
message.echo_test('testing')
|
29
|
-
send_to_server(message)
|
30
|
-
end
|
31
|
-
|
32
|
-
def login
|
33
|
-
message = GameMachine::Helpers::GameMessage.new(@player_id)
|
34
|
-
end
|
35
|
-
|
36
|
-
def send_to_server(message)
|
37
|
-
@client.send_to_server(message.client_message.to_byte_array,@ctx)
|
38
|
-
end
|
39
|
-
|
40
|
-
def join_chat_groups
|
41
|
-
message = GameMachine::Helpers::GameMessage.new(@player_id)
|
42
|
-
CHAT_CHANNELS.each do |name|
|
43
|
-
message.join_chat(name)
|
44
|
-
end
|
45
|
-
send_to_server(message)
|
46
|
-
end
|
47
|
-
|
48
|
-
|
49
|
-
def send_chat_message
|
50
|
-
message = GameMachine::Helpers::GameMessage.new(@player_id)
|
51
|
-
CHAT_CHANNELS.each do |name|
|
52
|
-
message.chat_message('group','testing',name)
|
53
|
-
end
|
54
|
-
send_to_server(message)
|
55
|
-
end
|
56
|
-
|
57
|
-
def on_receive(message)
|
58
|
-
if message == 'send_chat_message'
|
59
|
-
send_chat_message
|
60
|
-
else
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
module GameMachine
|
2
|
-
module Bot
|
3
|
-
class Client < Actor::Base
|
4
|
-
|
5
|
-
def self.start_udt_client(name,port)
|
6
|
-
UdtClient.start(name,'localhost',port)
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.start(name,port)
|
10
|
-
Actor::Builder.new(self).with_name(name).start
|
11
|
-
client = start_udt_client(name,port)
|
12
|
-
master_ref = self.find(name)
|
13
|
-
master_ref.tell(client)
|
14
|
-
ctx = nil
|
15
|
-
loop do
|
16
|
-
ctx = master_ref.ask('ctx',10)
|
17
|
-
break if ctx
|
18
|
-
end
|
19
|
-
master_ref.tell('start_players')
|
20
|
-
end
|
21
|
-
|
22
|
-
def post_init(*args)
|
23
|
-
@client = nil
|
24
|
-
@ctx = nil
|
25
|
-
end
|
26
|
-
|
27
|
-
def start_player
|
28
|
-
name = "player#{@player_id}"
|
29
|
-
child = Actor::Builder.new(Bot::Chat,@client,@ctx,name,@player_id).with_parent(context).with_name(name).start
|
30
|
-
@player = child
|
31
|
-
end
|
32
|
-
|
33
|
-
def on_receive(message)
|
34
|
-
if message.is_a?(JavaLib::DefaultChannelHandlerContext)
|
35
|
-
@ctx = message
|
36
|
-
elsif message.is_a?(UdtClient)
|
37
|
-
@client = message
|
38
|
-
elsif message == 'ctx'
|
39
|
-
sender.tell(@ctx) if @ctx
|
40
|
-
elsif message == 'start_players'
|
41
|
-
GameMachine.logger.info "#{@player_id} started"
|
42
|
-
#start_player
|
43
|
-
player_id = rand(10000).to_s
|
44
|
-
m = GameMachine::Helpers::GameMessage.new(player_id)
|
45
|
-
m.player_logout
|
46
|
-
@client.send_to_server(m.to_byte_array,@ctx)
|
47
|
-
else
|
48
|
-
client_message = ClientMessage.parse_from(message.bytes)
|
49
|
-
#@player.tell(client_message,get_self)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module GameMachine
|
3
|
-
module DataStores
|
4
|
-
describe Mapdb do
|
5
|
-
|
6
|
-
after(:each) do
|
7
|
-
#DataStore.instance.shutdown
|
8
|
-
#DataStore.instance.set_store('memory')
|
9
|
-
end
|
10
|
-
|
11
|
-
subject do
|
12
|
-
instance = DataStore.instance
|
13
|
-
instance.set_store('mapdb')
|
14
|
-
instance
|
15
|
-
end
|
16
|
-
|
17
|
-
let(:entity) do
|
18
|
-
MessageLib::Entity.new.set_id('one')
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "iteration" do
|
22
|
-
it "returns all entries" do
|
23
|
-
subject.set('one','one')
|
24
|
-
subject.set('two','two')
|
25
|
-
subject.keys.each do |key|
|
26
|
-
#puts "KEY= " + subject.get(key)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
describe "get_and_set" do
|
31
|
-
it "get should return the value that was set" do
|
32
|
-
subject.set('test',entity.to_byte_array)
|
33
|
-
entity = MessageLib::Entity.parse_from(subject.get('test'))
|
34
|
-
expect(entity.id).to eq('one')
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#shutdown" do
|
39
|
-
it "should return nil" do
|
40
|
-
#expect(subject.shutdown).to be_nil
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module GameMachine
|
3
|
-
module DataStores
|
4
|
-
describe Redis do
|
5
|
-
|
6
|
-
after(:each) do
|
7
|
-
DataStore.instance.shutdown
|
8
|
-
DataStore.instance.set_store('memory')
|
9
|
-
end
|
10
|
-
|
11
|
-
subject do
|
12
|
-
instance = DataStore.instance
|
13
|
-
instance.set_store('redis')
|
14
|
-
instance
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "#get" do
|
18
|
-
it "returns the value" do
|
19
|
-
subject.set('key','value')
|
20
|
-
expect(subject.get('key')).to eql('value')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "#set" do
|
25
|
-
it "returns true" do
|
26
|
-
expect(subject.set('key','value')).to be_true
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "#delete" do
|
31
|
-
it "returns true" do
|
32
|
-
expect(subject.delete('key')).to be_true
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#shutdown" do
|
37
|
-
it "should return nil" do
|
38
|
-
expect(subject.shutdown).to be_nil
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|