gameoverseer 0.1.6 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d3a55d13dda70786ed10781f46094031df06eb4
4
- data.tar.gz: d1435409e75de708fbe9b9860ebc7e6959af5789
3
+ metadata.gz: 28c2eb4a05934b78327ce681c1fbc76de3a4f8b9
4
+ data.tar.gz: e06290e98d2ec47fdfedd0a098c0dfd4de7e413b
5
5
  SHA512:
6
- metadata.gz: 540a6cc5212f1a1a30e430a31efcd92ba31f411ef70559de2f46cde0802a4ef395fdeb7729a3d277a397693de51ed3a4ed58b3f2d3bf2e753e67d051311230ca
7
- data.tar.gz: f37e496848ca40fc3316e3dd7a2125f919aec507209c9e183e14d9d649755e9bc741db14a57c4c9af9daf6945d3a9cb6ec72e1ab411ed9a71e6fdbdce0f66d2f
6
+ metadata.gz: 7d605106b5a488bc26459782ad154d17e07d24bbb51c5e650ef48a0e30b76b4999cfeacea96a0c52683dd397d07e8868e846a0ae9d21f778e6ec2a6d86180871
7
+ data.tar.gz: c47f9d0de2fd48b97732b07db2bbc0bed6a1f7e034c52192b95b9d85b2a5dd5f795d45da5833458fc341309619eba035938bda72244336d75b60073a6753543f
data/.gitignore CHANGED
@@ -1,4 +1,4 @@
1
- log-*.txt
2
- .yardoc/*
3
- protocol.md
4
- *.gem
1
+ log-*.txt
2
+ .yardoc/*
3
+ protocol.md
4
+ *.gem
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,30 +1,30 @@
1
- PATH
2
- remote: .
3
- specs:
4
- gameoverseer (0.1.2)
5
- concurrent-ruby
6
- gosu (= 0.10.6)
7
- multi_json
8
- renet
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- concurrent-ruby (1.0.1)
14
- concurrent-ruby (1.0.1-java)
15
- gosu (0.10.6)
16
- gosu (0.10.6-x64-mingw32)
17
- gosu (0.10.6-x86-mingw32)
18
- multi_json (1.11.3)
19
- renet (0.2.1)
20
-
21
- PLATFORMS
22
- java
23
- x64-mingw32
24
- x86-mingw32
25
-
26
- DEPENDENCIES
27
- gameoverseer!
28
-
29
- BUNDLED WITH
30
- 1.11.2
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gameoverseer (0.1.2)
5
+ concurrent-ruby
6
+ gosu (= 0.10.6)
7
+ multi_json
8
+ renet
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ concurrent-ruby (1.0.1)
14
+ concurrent-ruby (1.0.1-java)
15
+ gosu (0.10.6)
16
+ gosu (0.10.6-x64-mingw32)
17
+ gosu (0.10.6-x86-mingw32)
18
+ multi_json (1.11.3)
19
+ renet (0.2.1)
20
+
21
+ PLATFORMS
22
+ java
23
+ x64-mingw32
24
+ x86-mingw32
25
+
26
+ DEPENDENCIES
27
+ gameoverseer!
28
+
29
+ BUNDLED WITH
30
+ 1.11.2
data/README.md CHANGED
@@ -1,51 +1,51 @@
1
- [![Code Climate](https://codeclimate.com/github/cyberarm/rewrite-gameoverseer/badges/gpa.svg)](https://codeclimate.com/github/cyberarm/rewrite-gameoverseer)
2
- [![Inline docs](http://inch-ci.org/github/cyberarm/rewrite-gameoverseer.svg?branch=master)](http://inch-ci.org/github/cyberarm/rewrite-gameoverseer)
3
-
4
- # GameOverseer
5
- A game server, designed to be able to play host to up to 4 players in Planet Wars.
6
-
7
- This repo is a complete rewrite of [GameOverseer](https://github.com/cyberarm/gameoverseer).
8
-
9
- # Status
10
- In development.
11
- Any examples given are subject to be outdated at anytime.
12
-
13
- # Install
14
- ### Using bundler
15
- Add this to your Gemfile
16
- ``` ruby
17
- gem "gameoverseer"
18
- ```
19
- and run to install.
20
- ```
21
- bundle install
22
- ```
23
-
24
- ### Or using RubyGems
25
- ```
26
- gem install gameoverseer
27
- ```
28
-
29
- # Usage
30
- ``` ruby
31
- require 'gameoverseer'
32
-
33
- # Write a service for your game
34
- class GameWorld < GameOverseer::Service
35
- def setup
36
- channel_manager.register_channel('game_world', self)
37
- end
38
-
39
- def process(data)
40
- # Do stuff with the data hash.
41
- end
42
-
43
- def version
44
- "1.3.75"
45
- end
46
- end
47
-
48
- host = "localhost"
49
- port = 56789
50
- GameOverseer.activate(host, port)
51
- ```
1
+ [![Code Climate](https://codeclimate.com/github/cyberarm/rewrite-gameoverseer/badges/gpa.svg)](https://codeclimate.com/github/cyberarm/rewrite-gameoverseer)
2
+ [![Inline docs](http://inch-ci.org/github/cyberarm/rewrite-gameoverseer.svg?branch=master)](http://inch-ci.org/github/cyberarm/rewrite-gameoverseer)
3
+
4
+ # GameOverseer
5
+ A game server, designed to be able to play host to up to 4 players in Planet Wars.
6
+
7
+ This repo is a complete rewrite of [GameOverseer](https://github.com/cyberarm/gameoverseer).
8
+
9
+ # Status
10
+ In development.
11
+ Any examples given are subject to be outdated at anytime.
12
+
13
+ # Install
14
+ ### Using bundler
15
+ Add this to your Gemfile
16
+ ``` ruby
17
+ gem "gameoverseer"
18
+ ```
19
+ and run to install.
20
+ ```
21
+ bundle install
22
+ ```
23
+
24
+ ### Or using RubyGems
25
+ ```
26
+ gem install gameoverseer
27
+ ```
28
+
29
+ # Usage
30
+ ``` ruby
31
+ require 'gameoverseer'
32
+
33
+ # Write a service for your game
34
+ class GameWorld < GameOverseer::Service
35
+ def setup
36
+ channel_manager.register_channel('game_world', self)
37
+ end
38
+
39
+ def process(data)
40
+ # Do stuff with the data hash.
41
+ end
42
+
43
+ def version
44
+ "1.3.75"
45
+ end
46
+ end
47
+
48
+ host = "localhost"
49
+ port = 56789
50
+ GameOverseer.activate(host, port)
51
+ ```
data/gameoverseer.gemspec CHANGED
@@ -1,22 +1,22 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "gameoverseer/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "gameoverseer"
7
- s.version = GameOverseer::VERSION
8
- s.authors = ["Cyberarm"]
9
- s.email = ["matthewlikesrobots@gmail.com"]
10
- s.homepage = "https://github.com/cyberarm/rewrite-gameoverseer"
11
- s.summary = "Generic game server."
12
- s.description = "GameOverseer is designed to simplify the making of multiplayer games by providing a way to simply and easily write a game server."
13
-
14
- s.files = `git ls-files`.split("\n")
15
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
- s.require_paths = ["lib", "bin"]
18
-
19
- s.add_runtime_dependency "concurrent-ruby"
20
- s.add_runtime_dependency "renet", "~> 0.2", ">= 0.2.2"
21
- s.add_runtime_dependency "multi_json"
22
- end
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "gameoverseer/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "gameoverseer"
7
+ s.version = GameOverseer::VERSION
8
+ s.authors = ["Cyberarm"]
9
+ s.email = ["matthewlikesrobots@gmail.com"]
10
+ s.homepage = "https://github.com/cyberarm/rewrite-gameoverseer"
11
+ s.summary = "Generic game server."
12
+ s.description = "GameOverseer is designed to simplify the making of multiplayer games by providing a way to simply and easily write a game server."
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib", "bin"]
18
+
19
+ s.add_runtime_dependency "concurrent-ruby"
20
+ s.add_runtime_dependency "renet", "~> 0.2", ">= 0.2.2"
21
+ s.add_runtime_dependency "multi_json"
22
+ end
data/lib/gameoverseer.rb CHANGED
@@ -1,70 +1,73 @@
1
- require "set"
2
- require "openssl"
3
-
4
- require "concurrent"
5
- require "renet"
6
- require "multi_json"
7
-
8
- require_relative "gameoverseer/version"
9
-
10
- begin
11
- require_relative "gameoverseer/console/console"
12
- rescue => e
13
- require_relative "gameoverseer/console/namespace_creator"
14
- require_relative "gameoverseer/console/console"
15
- end
16
-
17
- require_relative "gameoverseer/channels/channel_manager"
18
-
19
- require_relative "gameoverseer/messages/message_manager"
20
-
21
- require_relative "gameoverseer/clients/client_manager"
22
-
23
- require_relative "gameoverseer/services/service"
24
- require_relative "gameoverseer/services/services"
25
-
26
- require_relative "gameoverseer/input_handler/input_handler"
27
-
28
- require_relative "gameoverseer/packet_handler/packet_handler"
29
- require_relative "gameoverseer/encryption_handler/encryption_handler"
30
-
31
- require_relative "gameoverseer/server/renet_server"
32
-
33
-
34
- Thread.abort_on_exception = true
35
- # General purpose game server that uses services (plugins) for logic.
36
- module GameOverseer
37
-
38
- # Start server
39
- def self.activate(host, port, use_inbuilt_console = false, packet_handler = PacketHandler, encryption_handler = nil)
40
- begin
41
- GameOverseer::Console.log "Using inbuilt console"
42
- require "gosu" if use_inbuilt_console
43
- rescue LoadError
44
- fatal "Install gosu 0.10.8 or later to use inbuilt console."
45
- end
46
-
47
- GameOverseer::ChannelManager.new
48
- GameOverseer::MessageManager.new
49
- GameOverseer::ClientManager.new
50
-
51
- @console = GameOverseer::Console.new if use_inbuilt_console
52
- @server = GameOverseer::ENetServerRunner.new
53
-
54
- Thread.new {@server.start(host, port, packet_handler, encryption_handler)}
55
- @console.show if use_inbuilt_console
56
- sleep
57
-
58
- at_exit do
59
- GameOverseer::Console.instance.close if use_inbuilt_console
60
- @server.supervisor.terminate if defined?(@server.supervisor.terminate)
61
- GameOverseer::Console.log "Server Shutdown"
62
- end
63
- end
64
-
65
- # Stop server
66
- def self.deactivate
67
- puts "ALERT \"CONSOLE CLOSED. LOST CONTROL OF SERVER.\""
68
- @server.supervisor.terminate
69
- end
70
- end
1
+ require "set"
2
+ require "openssl"
3
+
4
+ require "concurrent"
5
+ require "renet"
6
+
7
+ require_relative "gameoverseer/version"
8
+
9
+ begin
10
+ require_relative "gameoverseer/console/console"
11
+ rescue => e
12
+ require_relative "gameoverseer/console/namespace_creator"
13
+ require_relative "gameoverseer/console/console"
14
+ end
15
+
16
+ require_relative "gameoverseer/channels/channel_manager"
17
+
18
+ require_relative "gameoverseer/messages/message_manager"
19
+
20
+ require_relative "gameoverseer/clients/client_manager"
21
+
22
+ require_relative "gameoverseer/services/service"
23
+ require_relative "gameoverseer/services/services"
24
+
25
+ require_relative "gameoverseer/input_handler/input_handler"
26
+
27
+ require_relative "gameoverseer/packet_handler/packet_handler"
28
+ require_relative "gameoverseer/packet_handler/json_packet_handler"
29
+ require_relative "gameoverseer/packet_handler/messagepack_packet_handler"
30
+ require_relative "gameoverseer/encryption_handler/encryption_handler"
31
+
32
+ require_relative "gameoverseer/server/renet_server"
33
+
34
+
35
+ Thread.abort_on_exception = true
36
+ # General purpose game server that uses services (plugins) for logic.
37
+ module GameOverseer
38
+
39
+ # Start server
40
+ def self.activate(host, port, use_inbuilt_console = false, packet_handler = JsonPacketHandler, encryption_handler = nil)
41
+ begin
42
+ if use_inbuilt_console
43
+ require "gosu"
44
+ GameOverseer::Console.log "Using inbuilt console"
45
+ end
46
+ rescue LoadError
47
+ fatal "Install gosu 0.10.8 or later to use inbuilt console."
48
+ end
49
+
50
+ GameOverseer::ChannelManager.new
51
+ GameOverseer::MessageManager.new
52
+ GameOverseer::ClientManager.new
53
+
54
+ @console = GameOverseer::Console.new if use_inbuilt_console
55
+ @server = GameOverseer::ENetServerRunner.new
56
+
57
+ Thread.new {@server.start(host, port, packet_handler, encryption_handler)}
58
+ @console.show if use_inbuilt_console
59
+ sleep
60
+
61
+ at_exit do
62
+ GameOverseer::Console.instance.close if use_inbuilt_console
63
+ @server.supervisor.terminate if defined?(@server.supervisor.terminate)
64
+ GameOverseer::Console.log "Server Shutdown"
65
+ end
66
+ end
67
+
68
+ # Stop server
69
+ def self.deactivate
70
+ puts "ALERT \"CONSOLE CLOSED. LOST CONTROL OF SERVER.\""
71
+ @server.supervisor.terminate
72
+ end
73
+ end
@@ -1,49 +1,48 @@
1
- module GameOverseer
2
-
3
- # Handles routing packets to the services that subscribe to channels
4
- class ChannelManager
5
- CHAT = 0
6
- WORLD= 1
7
- HANDSHAKE = 2
8
- FAULT=3
9
-
10
- def initialize
11
- @channels = {}
12
- ChannelManager.instance = self
13
- end
14
-
15
- # Enables a service to subscribe to a channel
16
- # @param channel [String]
17
- # @param service [Service]
18
- def register_channel(channel, service)
19
- _channel = channel.downcase
20
- unless @channels[_channel]
21
- @channels[_channel] = service
22
- GameOverseer::Console.log("ChannelManager> mapped '#{_channel}' to '#{service.class}'.")
23
- else
24
- raise "Could not map channel '#{_channel}' because '#{@channels[data[_channel]].class}' is already using it."
25
- end
26
- end
27
-
28
- # Routes packet to {Service}
29
- # @param client_id [Integer] ID of client that sent the packet
30
- # @param data [Hash] data from packet
31
- def send_to_service(client_id, data)
32
- GameOverseer::Console.log("ChannelManager> sent '#{data}' to '#{@channels[data['channel']].class}'.")
33
- @channels[data['channel']].client_id = client_id
34
- @channels[data['channel']].process(data)
35
- end
36
-
37
- # Returns instance of active {ChannelManager}
38
- # @return [ChannelManager]
39
- def self.instance
40
- @instance
41
- end
42
-
43
- # Sets instance of {ChannelManager} that is used through out the system
44
- # @param _instance [ChannelManager]
45
- def self.instance=_instance
46
- @instance = _instance
47
- end
48
- end
49
- end
1
+ module GameOverseer
2
+
3
+ # Handles routing packets to the services that subscribe to channels
4
+ class ChannelManager
5
+ CHAT = 0
6
+ WORLD= 1
7
+ HANDSHAKE = 2
8
+ FAULT=3
9
+
10
+ def initialize
11
+ @channels = {}
12
+ ChannelManager.instance = self
13
+ end
14
+
15
+ # Enables a service to subscribe to a channel
16
+ # @param channel [String]
17
+ # @param service [Service]
18
+ def register_channel(channel, service)
19
+ _channel = channel.downcase
20
+ unless @channels[_channel]
21
+ @channels[_channel] = service
22
+ GameOverseer::Console.log("ChannelManager> mapped '#{_channel}' to '#{service.class}'.")
23
+ else
24
+ raise "Could not map channel '#{_channel}' because '#{@channels[data[_channel]].class}' is already using it."
25
+ end
26
+ end
27
+
28
+ # Routes packet to {Service}
29
+ # @param client_id [Integer] ID of client that sent the packet
30
+ # @param data [Hash] data from packet
31
+ def send_to_service(client_id, data)
32
+ @channels[data['channel']].client_id = client_id
33
+ @channels[data['channel']].process(data)
34
+ end
35
+
36
+ # Returns instance of active {ChannelManager}
37
+ # @return [ChannelManager]
38
+ def self.instance
39
+ @instance
40
+ end
41
+
42
+ # Sets instance of {ChannelManager} that is used through out the system
43
+ # @param _instance [ChannelManager]
44
+ def self.instance=_instance
45
+ @instance = _instance
46
+ end
47
+ end
48
+ end