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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +13 -9
  3. data/config/config.example.yml +8 -1
  4. data/config/game_messages.proto +1 -0
  5. data/config/messages.proto +4 -0
  6. data/games/example/lib/npc.rb +8 -7
  7. data/games/models.rb +3 -0
  8. data/games/models/clan_member.rb +8 -0
  9. data/games/models/clan_profile.rb +9 -0
  10. data/games/models/player.rb +7 -0
  11. data/games/plugins.rb +1 -0
  12. data/games/plugins/team_handler.rb +49 -0
  13. data/games/preload.rb +5 -0
  14. data/java/build.gradle +3 -1
  15. data/java/gradle.properties +1 -1
  16. data/lib/game_machine/actor/base.rb +5 -1
  17. data/lib/game_machine/application.rb +13 -3
  18. data/lib/game_machine/commands/datastore_commands.rb +3 -7
  19. data/lib/game_machine/commands/player_commands.rb +3 -0
  20. data/lib/game_machine/data_store.rb +22 -1
  21. data/lib/game_machine/data_stores/couchbase.rb +18 -1
  22. data/lib/game_machine/endpoints/udp_incoming.rb +0 -1
  23. data/lib/game_machine/game_systems.rb +2 -0
  24. data/lib/game_machine/game_systems/chat.rb +33 -13
  25. data/lib/game_machine/game_systems/chat_manager.rb +24 -3
  26. data/lib/game_machine/game_systems/json_model_persistence.rb +23 -0
  27. data/lib/game_machine/game_systems/region_manager.rb +1 -1
  28. data/lib/game_machine/game_systems/team_manager.rb +421 -0
  29. data/lib/game_machine/handlers/request.rb +4 -0
  30. data/lib/game_machine/model.rb +59 -13
  31. data/lib/game_machine/models.rb +17 -0
  32. data/lib/game_machine/models/create_team.rb +9 -0
  33. data/lib/game_machine/models/destroy_team.rb +8 -0
  34. data/lib/game_machine/models/echo_test.rb +6 -0
  35. data/lib/game_machine/models/end_match.rb +7 -0
  36. data/lib/game_machine/models/find_match.rb +7 -0
  37. data/lib/game_machine/models/join_team.rb +7 -0
  38. data/lib/game_machine/models/leave_team.rb +7 -0
  39. data/lib/game_machine/models/match.rb +9 -0
  40. data/lib/game_machine/models/player_team.rb +9 -0
  41. data/lib/game_machine/models/start_match.rb +8 -0
  42. data/lib/game_machine/models/team.rb +11 -0
  43. data/lib/game_machine/models/team_accept_invite.rb +9 -0
  44. data/lib/game_machine/models/team_invite.rb +8 -0
  45. data/lib/game_machine/models/team_joined.rb +7 -0
  46. data/lib/game_machine/models/team_left.rb +7 -0
  47. data/lib/game_machine/models/teams.rb +7 -0
  48. data/lib/game_machine/models/teams_request.rb +6 -0
  49. data/lib/game_machine/object_db.rb +17 -11
  50. data/lib/game_machine/version.rb +1 -1
  51. data/lib/game_machine/write_behind_cache.rb +1 -1
  52. data/spec/actor/actor_spec.rb +5 -5
  53. data/spec/actor/ref_spec.rb +10 -10
  54. data/spec/client_manager_spec.rb +9 -9
  55. data/spec/commands/chat_commands_spec.rb +1 -1
  56. data/spec/commands/datastore_commands_spec.rb +10 -14
  57. data/spec/commands/navigation_commands_spec.rb +3 -3
  58. data/spec/commands/player_commands_spec.rb +1 -1
  59. data/spec/game_systems/agents/controller_spec.rb +6 -6
  60. data/spec/game_systems/chat_manager_spec.rb +1 -1
  61. data/spec/game_systems/chat_spec.rb +15 -17
  62. data/spec/game_systems/region_manager_spec.rb +31 -21
  63. data/spec/game_systems/team_manager_spec.rb +291 -0
  64. data/spec/grid_spec.rb +11 -1
  65. data/spec/handlers/authentication_spec.rb +1 -10
  66. data/spec/handlers/game_spec.rb +2 -2
  67. data/spec/handlers/request_spec.rb +10 -21
  68. data/spec/hashring_spec.rb +11 -11
  69. data/spec/java_grid_spec.rb +1 -1
  70. data/spec/misc_spec.rb +2 -2
  71. data/spec/model_spec.rb +26 -14
  72. data/spec/write_behind_cache_spec.rb +15 -15
  73. metadata +29 -8
  74. data/lib/game_machine/bot/chat.rb +0 -66
  75. data/lib/game_machine/bot/client.rb +0 -54
  76. data/spec/data_stores/mapdb_spec.rb +0 -46
  77. data/spec/data_stores/redis_spec.rb +0 -44
@@ -2,6 +2,10 @@ require 'spec_helper'
2
2
  module GameMachine
3
3
  describe Grid do
4
4
 
5
+ let(:test_grid_config) do
6
+ {:grid_size => 10, :cell_size => 10, :update_frequency => 1}
7
+ end
8
+
5
9
  subject {Grid}
6
10
 
7
11
  before(:each) do
@@ -18,11 +22,17 @@ module GameMachine
18
22
  describe "#load_from_config" do
19
23
  it "should create grids from config" do
20
24
  Grid.load_from_config
21
- expect(Grid.config.has_key?('default')).to be_true
25
+ expect(Grid.config.has_key?('default')).to be_truthy
22
26
  end
23
27
  end
24
28
 
25
29
  describe "#find_or_create" do
30
+
31
+ before(:each) do
32
+ expect(subject.config).to receive(:fetch).with('test').
33
+ and_return(test_grid_config)
34
+ end
35
+
26
36
  it "creates a grid if none exists for the given name" do
27
37
  grid = subject.find_or_create('test')
28
38
  expect(grid).to be_instance_of(JavaLib::Grid)
@@ -17,18 +17,9 @@ module GameMachine
17
17
 
18
18
  context "player is authenticated" do
19
19
  it "authenticates player with valid authtoken" do
20
- expect(subject.authenticate!(player)).to be_true
20
+ expect(subject.authenticate!(player)).to be_truthy
21
21
  end
22
22
  end
23
-
24
- context "player is not authenticated" do
25
- it "does not authenticate player with invalid authtoken" do
26
- player.set_authtoken('badtoken')
27
- expect(subject.authenticate!(player)).to be_false
28
- end
29
- end
30
-
31
-
32
23
  end
33
24
 
34
25
  end
@@ -25,8 +25,8 @@ module GameMachine
25
25
 
26
26
  it "dispatches entities to correct system" do
27
27
  client_message = MessageLib::ClientMessage.new.add_entity(leave_chat)
28
- GameSystems::ChatManager.stub(:find).and_return(actor_ref)
29
- actor_ref.should_receive(:tell)
28
+ allow(GameSystems::ChatManager).to receive(:find).and_return(actor_ref)
29
+ expect(actor_ref).to receive(:tell)
30
30
  Game.should_receive_message(client_message,'dispatch_test') do
31
31
  Game.find('dispatch_test').tell(client_message)
32
32
  end
@@ -25,36 +25,25 @@ module GameMachine
25
25
 
26
26
  let(:actor_ref) {double('Actor::Ref', :tell => true)}
27
27
 
28
- describe "#on_receive" do
28
+ subject do
29
+ ref = Actor::Builder.new(Request).with_name('request_test').test_ref
30
+ ref.underlying_actor
31
+ end
29
32
 
30
- before(:each) do
31
- Actor::Builder.new(Request).with_name('test_request_handler').start
32
- end
33
+ describe "#on_receive" do
33
34
 
34
35
  it "sets player on entities" do
36
+ allow(Authentication).to receive(:authenticated?).and_return(true)
35
37
  message = client_message
36
38
  entity = message.get_entity_list.first
37
- entity.should_receive(:set_player).with(message.player)
38
- Request.should_receive_message(message,'test_request_handler') do
39
- Request.find('test_request_handler').tell(message)
40
- end
39
+ expect(entity).to receive(:set_player).with(message.player)
40
+ subject.on_receive(message)
41
41
  end
42
42
 
43
43
 
44
44
  it "calls unhandled if not a client message" do
45
- Request.any_instance.should_receive(:unhandled).with('test')
46
- Request.should_receive_message('test','test_request_handler') do
47
- Request.find('test_request_handler').tell('test')
48
- end
49
- end
50
-
51
- it "calls unhandled if player is not set" do
52
- message = client_message
53
- message.set_player(nil)
54
- Request.any_instance.should_receive(:unhandled).with(message)
55
- Request.should_receive_message(message,'test_request_handler') do
56
- Request.find('test_request_handler').tell(message)
57
- end
45
+ expect(subject).to receive(:unhandled).with('test')
46
+ subject.on_receive('test')
58
47
  end
59
48
 
60
49
  end
@@ -12,47 +12,47 @@ module GameMachine
12
12
 
13
13
  describe "#nodes" do
14
14
  it "nodes should equal buckets" do
15
- subject.nodes.sort.should == buckets.sort
15
+ expect(subject.nodes.sort).to eq(buckets.sort)
16
16
  end
17
17
  end
18
18
 
19
19
  describe "#points" do
20
20
  it "should be number of points equal to REPLICAS * buckets.size " do
21
- subject.points.size.should == subject.buckets.size * Hashring::REPLICAS
21
+ expect(subject.points.size).to eq(subject.buckets.size * Hashring::REPLICAS)
22
22
  end
23
23
  end
24
24
 
25
25
  describe "#bucket_for" do
26
26
  it "returns bucket for value" do
27
- buckets.include?(subject.bucket_for('test')).should be_true
27
+ expect(buckets.include?(subject.bucket_for('test'))).to be_truthy
28
28
  end
29
29
  end
30
30
 
31
31
  describe "#remove_bucket" do
32
32
  it "removes the bucket from buckets array" do
33
33
  subject.remove_bucket('server1')
34
- subject.buckets.size.should == 1
35
- subject.buckets.first.should == 'server2'
34
+ expect(subject.buckets.size).to eq(1)
35
+ expect(subject.buckets.first).to eq('server2')
36
36
  end
37
37
 
38
38
  it "removes node from ring" do
39
39
  subject.remove_bucket('server1')
40
- subject.nodes.size.should == 1
41
- subject.buckets.first.should == 'server2'
40
+ expect(subject.nodes.size).to eq(1)
41
+ expect(subject.buckets.first).to eq('server2')
42
42
  end
43
43
  end
44
44
 
45
45
  describe "#add_bucket" do
46
46
  it "adds new bucket to buckets array" do
47
47
  subject.add_bucket('blah')
48
- subject.buckets.size.should == 3
49
- subject.buckets.sort.first.should == 'blah'
48
+ expect(subject.buckets.size).to eq(3)
49
+ expect(subject.buckets.sort.first).to eq('blah')
50
50
  end
51
51
 
52
52
  it "adds node to ring" do
53
53
  subject.add_bucket('blah')
54
- subject.nodes.size.should == 3
55
- subject.nodes.sort.first.should == 'blah'
54
+ expect(subject.nodes.size).to eq(3)
55
+ expect(subject.nodes.sort.first).to eq('blah')
56
56
  end
57
57
  end
58
58
  end
@@ -9,7 +9,7 @@ module GameMachine
9
9
 
10
10
  describe "#set" do
11
11
  it "returns true when value is set" do
12
- expect(subject.set('blah',0,0,0,'player')).to be_true
12
+ expect(subject.set('blah',0,0,0,'player')).to be_truthy
13
13
  end
14
14
 
15
15
  it "creates a grid point in correct cell" do
@@ -1,6 +1,7 @@
1
1
  require 'spec_helper'
2
2
  require 'jruby/core_ext'
3
3
  module GameMachine
4
+
4
5
  describe "misc" do
5
6
  let(:entity) do
6
7
  entity = MessageLib::Entity.new
@@ -12,10 +13,9 @@ module GameMachine
12
13
  entity
13
14
  end
14
15
 
15
- it "singleton manager" do
16
+ xit "singleton manager" do
16
17
  ref = Akka.instance.actor_system.actor_selection('/user/region_manager_proxy')
17
18
  ref.tell('HELLO',nil)
18
- sleep 1
19
19
  end
20
20
 
21
21
  xit "vector3" do
@@ -5,21 +5,25 @@ require 'benchmark'
5
5
  module GameMachine
6
6
  describe "model" do
7
7
 
8
- class ScopedModel < GameMachine::Model
8
+
9
+ class TestModel < GameMachine::Model
9
10
  attribute :health, Integer
10
11
  attribute :name, String
11
12
  attribute :defense_skill, Integer
12
13
  attribute :attack_skill, Integer
13
- set_id_scope :tm
14
14
  end
15
15
 
16
- class TestModel < GameMachine::Model
16
+ class ScopedModel < GameMachine::Model
17
17
  attribute :health, Integer
18
18
  attribute :name, String
19
19
  attribute :defense_skill, Integer
20
20
  attribute :attack_skill, Integer
21
+ attribute :test_models, Array
22
+ attribute :test_model, TestModel
23
+ set_id_scope :tm
21
24
  end
22
25
 
26
+
23
27
  let(:scoped_model) do
24
28
  model = ScopedModel.new(:health => 100, :id => 'myid')
25
29
  end
@@ -33,6 +37,19 @@ module GameMachine
33
37
  end
34
38
 
35
39
 
40
+
41
+ # Unfinished but leaving here for now
42
+ describe "nesting" do
43
+ it "should parse correctly" do
44
+ scoped_model.test_models = []
45
+ scoped_model.test_models << test_model
46
+ scoped_model.test_models << test_model
47
+ scoped_model.test_model = test_model
48
+ hash = JSON.parse(scoped_model.to_json)
49
+ ScopedModel.from_hash(hash)
50
+ end
51
+ end
52
+
36
53
  context :scoped_model do
37
54
 
38
55
  describe "#unscoped_id" do
@@ -60,19 +77,14 @@ module GameMachine
60
77
  describe "#save" do
61
78
 
62
79
  it "should return true on success" do
63
- expect(test_model.save).to be_true
64
- end
65
-
66
- it "should return false if id is nil" do
67
- test_model.id = nil
68
- expect(test_model.save).to be_false
80
+ expect(test_model.save).to be_truthy
69
81
  end
70
82
  end
71
83
 
72
84
  describe "#save!" do
73
- it "should raise an exception if id is nil" do
74
- test_model.id = nil
75
- expect {test_model.save!}.to raise_error
85
+ it "should call datastore.put!" do
86
+ expect_any_instance_of(GameMachine::Commands::DatastoreCommands).to receive(:put!)
87
+ test_model.save!
76
88
  end
77
89
 
78
90
  it "should not raise an exception if id is not nil" do
@@ -83,13 +95,13 @@ module GameMachine
83
95
  describe "#to_json" do
84
96
  it "should set klass" do
85
97
  model_hash = JSON.parse(test_model.to_json)
86
- expect(model_hash.has_key?('klass')).to be_true
98
+ expect(model_hash.has_key?('klass')).to be_truthy
87
99
  end
88
100
  end
89
101
 
90
102
  describe "#to_entity" do
91
103
  it "should return an entity with json entity" do
92
- expect(test_model.to_entity.has_json_entity).to be_true
104
+ expect(test_model.to_entity.has_json_entity).to be_truthy
93
105
  end
94
106
  end
95
107
 
@@ -15,8 +15,8 @@ module GameMachine
15
15
  ref = Actor::Builder.new(WriteBehindCache).test_ref
16
16
  #props = JavaLib::Props.new(WriteBehindCache);
17
17
  #ref = JavaLib::TestActorRef.create(Akka.instance.actor_system, props, WriteBehindCache.name);
18
- ref.underlying_actor.stub(:schedule_queue_run)
19
- ref.underlying_actor.stub(:schedule_queue_stats)
18
+ allow(ref.underlying_actor).to receive(:schedule_queue_run)
19
+ allow(ref.underlying_actor).to receive(:schedule_queue_stats)
20
20
  ref.underlying_actor.post_init
21
21
  ref.underlying_actor
22
22
  end
@@ -24,19 +24,19 @@ module GameMachine
24
24
  describe "#on_receive" do
25
25
 
26
26
  before(:each) do
27
- DataStore.stub(:instance).and_return(data_store)
27
+ allow(DataStore).to receive(:instance).and_return(data_store)
28
28
  subject.write_interval = 10
29
29
  subject.max_writes_per_second = 100
30
30
  end
31
31
 
32
32
  context "receives a string message" do
33
33
  it "check_queue message should call check_queue" do
34
- subject.should_receive(:check_queue)
34
+ expect(subject).to receive(:check_queue)
35
35
  subject.on_receive('check_queue')
36
36
  end
37
37
 
38
38
  it "takes one message id from queue and writes it" do
39
- data_store.should_receive(:set).exactly(2).times
39
+ expect(data_store).to receive(:set).exactly(2).times
40
40
  3.times do |i|
41
41
  subject.on_receive(entity.clone.set_id(i.to_s))
42
42
  end
@@ -45,7 +45,7 @@ module GameMachine
45
45
  end
46
46
 
47
47
  it "queue_stats message should call queue_stats" do
48
- subject.should_receive(:queue_stats)
48
+ expect(subject).to receive(:queue_stats)
49
49
  subject.on_receive('queue_stats')
50
50
  end
51
51
  end
@@ -54,28 +54,28 @@ module GameMachine
54
54
 
55
55
  it "new message should be written to cache" do
56
56
  subject.on_receive(entity)
57
- subject.cache.fetch(entity.id).should == entity
57
+ expect(subject.cache.fetch(entity.id)).to eq(entity)
58
58
  end
59
59
 
60
60
  it "message not eligible for write should be enqueued" do
61
61
  subject.on_receive(entity)
62
62
  subject.on_receive(entity)
63
- subject.queue.size.should == 1
63
+ expect(subject.queue.size).to eq(1)
64
64
  end
65
65
 
66
66
  it "saves to store with entity id and entity" do
67
- data_store.should_receive(:set).with(entity.id,kind_of(java.lang.Object))
67
+ expect(data_store).to receive(:set).with(entity.id,kind_of(java.lang.Object))
68
68
  subject.on_receive(entity)
69
69
  end
70
70
 
71
71
  it "does not save if write on same id happens before write_interval has passed" do
72
- data_store.should_receive(:set).with(entity.id,kind_of(java.lang.Object)).once
72
+ expect(data_store).to receive(:set).with(entity.id,kind_of(java.lang.Object)).once
73
73
  subject.on_receive(entity)
74
74
  subject.on_receive(entity)
75
75
  end
76
76
 
77
77
  it "sequential writes of different id's should get saved" do
78
- data_store.should_receive(:set).exactly(4).times
78
+ expect(data_store).to receive(:set).exactly(4).times
79
79
  4.times do |i|
80
80
  subject.on_receive(entity.clone.set_id(i.to_s))
81
81
  sleep 0.150
@@ -85,8 +85,8 @@ module GameMachine
85
85
  it "sequential writes that exceed max writes per second should be enqueued" do
86
86
  subject.write_interval = -1
87
87
  subject.max_writes_per_second = 1
88
- data_store.should_receive(:set).exactly(1).times
89
- subject.should_receive(:enqueue).exactly(2).times
88
+ expect(data_store).to receive(:set).exactly(1).times
89
+ expect(subject).to receive(:enqueue).exactly(2).times
90
90
  3.times do |i|
91
91
  subject.on_receive(entity.clone.set_id(i.to_s))
92
92
  end
@@ -95,8 +95,8 @@ module GameMachine
95
95
  it "sequential writes of existing messages that exceed write_interval should be enqueued" do
96
96
  subject.write_interval = 100000
97
97
  subject.max_writes_per_second = -1
98
- data_store.should_receive(:set).exactly(1).times
99
- subject.should_receive(:enqueue).exactly(3).times
98
+ expect(data_store).to receive(:set).exactly(1).times
99
+ expect(subject).to receive(:enqueue).exactly(3).times
100
100
  4.times do |i|
101
101
  subject.on_receive(entity.set_id('11'))
102
102
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: game_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Ochs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-28 00:00:00.000000000 Z
11
+ date: 2014-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -260,6 +260,12 @@ files:
260
260
  - games/example/lib/player_register.rb
261
261
  - games/example/lib/tracking_handler.rb
262
262
  - games/example/lib/zone_manager.rb
263
+ - games/models.rb
264
+ - games/models/clan_member.rb
265
+ - games/models/clan_profile.rb
266
+ - games/models/player.rb
267
+ - games/plugins.rb
268
+ - games/plugins/team_handler.rb
263
269
  - games/preload.rb
264
270
  - integration_tests/basic_spec.rb
265
271
  - integration_tests/bot_spec.rb
@@ -314,8 +320,6 @@ files:
314
320
  - lib/game_machine/application.rb
315
321
  - lib/game_machine/auth_handlers/base.rb
316
322
  - lib/game_machine/auth_handlers/public.rb
317
- - lib/game_machine/bot/chat.rb
318
- - lib/game_machine/bot/client.rb
319
323
  - lib/game_machine/client_manager.rb
320
324
  - lib/game_machine/clients.rb
321
325
  - lib/game_machine/clients/client.rb
@@ -359,6 +363,7 @@ files:
359
363
  - lib/game_machine/game_systems/devnull.rb
360
364
  - lib/game_machine/game_systems/entity_loader.rb
361
365
  - lib/game_machine/game_systems/entity_tracking.rb
366
+ - lib/game_machine/game_systems/json_model_persistence.rb
362
367
  - lib/game_machine/game_systems/local_echo.rb
363
368
  - lib/game_machine/game_systems/objectdb_proxy.rb
364
369
  - lib/game_machine/game_systems/private_chat.rb
@@ -367,6 +372,7 @@ files:
367
372
  - lib/game_machine/game_systems/region_settings.rb
368
373
  - lib/game_machine/game_systems/remote_echo.rb
369
374
  - lib/game_machine/game_systems/stress_test.rb
375
+ - lib/game_machine/game_systems/team_manager.rb
370
376
  - lib/game_machine/grid.rb
371
377
  - lib/game_machine/grid_replicator.rb
372
378
  - lib/game_machine/handlers/authentication.rb
@@ -381,8 +387,25 @@ files:
381
387
  - lib/game_machine/message_queue.rb
382
388
  - lib/game_machine/model.rb
383
389
  - lib/game_machine/models.rb
390
+ - lib/game_machine/models/create_team.rb
391
+ - lib/game_machine/models/destroy_team.rb
392
+ - lib/game_machine/models/echo_test.rb
393
+ - lib/game_machine/models/end_match.rb
394
+ - lib/game_machine/models/find_match.rb
395
+ - lib/game_machine/models/join_team.rb
396
+ - lib/game_machine/models/leave_team.rb
397
+ - lib/game_machine/models/match.rb
384
398
  - lib/game_machine/models/player_status_update.rb
399
+ - lib/game_machine/models/player_team.rb
385
400
  - lib/game_machine/models/region.rb
401
+ - lib/game_machine/models/start_match.rb
402
+ - lib/game_machine/models/team.rb
403
+ - lib/game_machine/models/team_accept_invite.rb
404
+ - lib/game_machine/models/team_invite.rb
405
+ - lib/game_machine/models/team_joined.rb
406
+ - lib/game_machine/models/team_left.rb
407
+ - lib/game_machine/models/teams.rb
408
+ - lib/game_machine/models/teams_request.rb
386
409
  - lib/game_machine/mono_server.rb
387
410
  - lib/game_machine/navigation.rb
388
411
  - lib/game_machine/navigation/detour.rb
@@ -453,8 +476,6 @@ files:
453
476
  - spec/commands/navigation_commands_spec.rb
454
477
  - spec/commands/player_commands_spec.rb
455
478
  - spec/commands_spec.rb
456
- - spec/data_stores/mapdb_spec.rb
457
- - spec/data_stores/redis_spec.rb
458
479
  - spec/game_systems/agents/controller_spec.rb
459
480
  - spec/game_systems/agents/test_agent.rb
460
481
  - spec/game_systems/agents/test_agent_config.rb
@@ -462,6 +483,7 @@ files:
462
483
  - spec/game_systems/chat_spec.rb
463
484
  - spec/game_systems/entity_tracking_spec.rb
464
485
  - spec/game_systems/region_manager_spec.rb
486
+ - spec/game_systems/team_manager_spec.rb
465
487
  - spec/grid_spec.rb
466
488
  - spec/handlers/authentication_spec.rb
467
489
  - spec/handlers/game_spec.rb
@@ -546,8 +568,6 @@ test_files:
546
568
  - spec/commands/navigation_commands_spec.rb
547
569
  - spec/commands/player_commands_spec.rb
548
570
  - spec/commands_spec.rb
549
- - spec/data_stores/mapdb_spec.rb
550
- - spec/data_stores/redis_spec.rb
551
571
  - spec/game_systems/agents/controller_spec.rb
552
572
  - spec/game_systems/agents/test_agent.rb
553
573
  - spec/game_systems/agents/test_agent_config.rb
@@ -555,6 +575,7 @@ test_files:
555
575
  - spec/game_systems/chat_spec.rb
556
576
  - spec/game_systems/entity_tracking_spec.rb
557
577
  - spec/game_systems/region_manager_spec.rb
578
+ - spec/game_systems/team_manager_spec.rb
558
579
  - spec/grid_spec.rb
559
580
  - spec/handlers/authentication_spec.rb
560
581
  - spec/handlers/game_spec.rb