tkrajcar / carbonmu Goto Github PK
View Code? Open in Web Editor NEWCarbonMU was experiments towards a general-purpose, extendable MUD/MUSH server written in Ruby.
License: MIT License
CarbonMU was experiments towards a general-purpose, extendable MUD/MUSH server written in Ruby.
License: MIT License
Something in 07a9eae made each rspec suite slow. Like really slow. Need to find out what it is and fix.
Figure this out once & for all and do it properly.
Needs to show:
Bonus points: Subtle ANSI for headers and highlight players in exits.
Use bcrypt...!
https://gist.github.com/robcthegeek/1353123 seems to have most of the crunchy bits figured out for Mongoid + bcrypt, although we won't have confirmations, and so on.
Create contents:
/Gemfile with current version of carbonmu
/config/database.yml
Then, run bundle, and show some nice text with what to do next.
I'd like to get some thoughts from those who might be interested about the 'primitives' that should be supported out of the box - these are the data types that every game should have. For example, MUSH/MUX use 'Player', 'Thing', 'Room', and 'Exit' - with players and things being pretty damn similar. MUDs have items, NPCs, players, rooms, etc. Some MUD drivers also have 'blueprint items' which are interacted with slightly differently than regular items, and so on.
Obviously, as a fresh engine, we have the power to completely rethink this. I don't want to put more datatypes than we need to in CarbonMU core since part of the focus of this project is to build something modular - something like 'weapon' is too game-style-specific IMO - but I've also been building exclusively MUSH/MUX/MUSE games for 20 years, so I could use some input on what other core primitives we should support.
It feels to me like the traditional four (Player/Thing/Room/Exit) are a lock, but I'm open to disagreement, and also any new ideas. Just comment.
16 color, 256 color, all the things.
Need internal call for matching names to GameObject
s, to be used in commands (ie 'look foo', need to turn foo into an object).
Parameters:
These managers all over the place are kind of messy. Extracting behavior so Server doesn't get massive is fine, but they should probably be delegated methods.
@1337807 and @zoevkay spiked on a quit command that does, in fact, close connections. Unfortunately, it also crashes the edge router. Probably it should not do that.
When connecting to the telnet port (127.0.0.1:8421) using the PuTTYtel telnet client, the server crashes.
Steps I took:
The server crashes, printing the following log:
$ rake console
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/celluloid/depr
ecate.rb:13: warning: already initialized constant Celluloid::Logger
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-essentials-0.20.0.pre17/lib/cel
luloid/essentials.rb:27: warning: previous definition of Logger was here
I, [2015-06-01T03:47:37.226786 #8624] INFO -- : +------------------------------
--------------------+
I, [2015-06-01T03:47:37.227764 #8624] INFO -- : | Celluloid version running
now: 0.17.0.pre15 +
W, [2015-06-01T03:47:37.227764 #8624] WARN -- : +------------------------------
--------------------+
W, [2015-06-01T03:47:37.228737 #8624] WARN -- : | Celluloid is running in B
ACKPORTED mode. |
W, [2015-06-01T03:47:37.228737 #8624] WARN -- : | Time to update deprecated c
ode, before v1.0! |
W, [2015-06-01T03:47:37.229723 #8624] WARN -- : +------------------------------
--------------------+
W, [2015-06-01T03:47:37.229723 #8624] WARN -- : | Prepare! As of v0.17.5 you c
an begin updating. |
W, [2015-06-01T03:47:37.230696 #8624] WARN -- : +------------------------------
--------------------+
W, [2015-06-01T03:47:37.231675 #8624] WARN -- : | Want to read about it? htt
p://git.io/vJf3J |
W, [2015-06-01T03:47:37.231675 #8624] WARN -- : +------------------------------
--------------------+
WARN: Unresolved specs during Gem::Specification.reset:
minitest (~> 5.1)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
I, [2015-06-01T03:48:12.502302 #8624] INFO -- : MONGOID: Created indexes on Car
bonMU::GameObject:
I, [2015-06-01T03:48:12.503303 #8624] INFO -- : MONGOID: Index: {:_special=>1},
Options: {}
I, [2015-06-01T03:48:12.503303 #8624] INFO -- : MONGOID: Index: {:location_id=>
1}, Options: {:background=>true}
I, [2015-06-01T03:48:12.504304 #8624] INFO -- : MONGOID: Index: {:destination_i
[1] pry(CarbonMU)> carbonmucarbonmu starttart
I, [2015-06-01T03:48:22.988525 #8624] INFO -- CarbonMU: *** Starting CarbonMU e
dge router.
I, [2015-06-01T03:48:22.990525 #8624] INFO -- CarbonMU: *** Starting Telnet rec
eptor on 0.0.0.0 8421.
I, [2015-06-01T03:48:23.000532 #8624] INFO -- CarbonMU: *** Edge router waiting
for IPC on port 56091
I, [2015-06-01T03:48:45.697289 #26876] INFO -- CarbonMU: *** Starting CarbonMU
game server to connect to edge router port 56091.
I, [2015-06-01T03:48:45.792357 #26876] INFO -- : MONGOID: Created indexes on Ca
rbonMU::GameObject:
I, [2015-06-01T03:48:45.793358 #26876] INFO -- : MONGOID: Index: {:_special=>1}
, Options: {}
I, [2015-06-01T03:48:45.794358 #26876] INFO -- : MONGOID: Index: {:location_id=
>1}, Options: {:background=>true}
I, [2015-06-01T03:48:45.795359 #26876] INFO -- : MONGOID: Index: {:destination_
id=>1}, Options: {:background=>true}
D, [2015-06-01T03:48:45.813370 #26876] DEBUG -- CarbonMU: SERVER SEND: <IPCMessa
ge: {:port=>56103, :pid=>26876, :op=>:started}>
D, [2015-06-01T03:48:45.849390 #26876] DEBUG -- CarbonMU: SERVER SEND: <IPCMessa
ge: {:op=>:retrieve_existing_connections}>
D, [2015-06-01T03:48:45.869404 #8624] DEBUG -- CarbonMU: EDGE ROUTER RECEIVE: <I
PCMessage: {:port=>56103, :pid=>26876, :op=>:started}>
D, [2015-06-01T03:48:45.870404 #8624] DEBUG -- CarbonMU: *** Edge router receive
d server IPC start. Pid 26876, port 56103.
D, [2015-06-01T03:48:45.875412 #8624] DEBUG -- CarbonMU: EDGE ROUTER RECEIVE: <I
PCMessage: {:op=>:retrieve_existing_connections}>
I, [2015-06-01T03:48:45.875412 #8624] INFO -- CarbonMU: Sending connections to
server...
(This was the moment where I tried connecting using the telnet client. Now the server crashes:)
E, [2015-06-01T03:48:55.034487 #8624] ERROR -- CarbonMU: Actor crashed! ThreadError: deadlock; recursive locking c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/nio4r-1.1.0/lib/nio/selector.rb:4 0:in
synchronize'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/nio4r-1.1.0/lib/nio/selector.rb:4
0:in deregister' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/nio4r-1.1.0/lib/nio/monitor.rb:40 :in
close'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-io-0.16.5.pre0/lib/cell
uloid/io/reactor.rb:52:in wait' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-io-0.16.5.pre0/lib/cell uloid/io/reactor.rb:21:in
wait_readable'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-io-0.16.5.pre0/lib/cell
uloid/io.rb:53:in wait_readable' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-io-0.16.5.pre0/lib/cell uloid/io/tcp_server.rb:19:in
accept'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/carbonmu-0.0.3/lib/carbonmu/edge_
router/telnet_receptor.rb:23:in block in run' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/carbonmu-0.0.3/lib/carbonmu/edge_ router/telnet_receptor.rb:23:in
loop'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/carbonmu-0.0.3/lib/carbonmu/edge_
router/telnet_receptor.rb:23:in run' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul oid/calls.rb:28:in
public_send'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul
oid/calls.rb:28:in dispatch' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul oid/call/async.rb:7:in
dispatch'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul
oid/cell.rb:50:in block in dispatch' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul oid/cell.rb:76:in
block in task'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul
oid/actor.rb:363:in block in task' c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul oid/task.rb:57:in
block in initialize'
c:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/celluloid-0.17.0.pre15/lib/cellul
oid/task/fibered.rb:14:in block in create'
My system: Windows 8.1, Ruby 2.1.6
Start the server, then quickly alt tab and telnet in. Connection loads ok, but running any commands seems to crash the Server actor.
Anything should be able to publish an event, and anything should be able to subscribe to an event.
wisper
/ wisper-celluloid
maybe?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.