Creating game we begin with preparing our rails env. This will be a simple mountable rails engine with multiplayer server written using eventmachine.

We will start with generating rails engine without active record, action view and test unit:

rails plugin new macbury_ninja --skip-active-record --skip-action-view --skip-test-unit
create README.rdoc create Rakefile create macbury_ninja.gemspec create MIT-LICENSE create .gitignore create Gemfile create app/models create app/models/.keep create app/controllers create app/controllers/.keep create app/views create app/views/.keep create app/helpers create app/helpers/.keep create app/mailers create app/mailers/.keep create app/assets/images/macbury_ninja create app/assets/images/macbury_ninja/.keep create config/routes.rb create lib/macbury_ninja.rb create lib/tasks/macbury_ninja_tasks.rake create lib/macbury_ninja/version.rb create lib/macbury_ninja/engine.rb create app/assets/stylesheets/macbury_ninja create app/assets/stylesheets/macbury_ninja/.keep create app/assets/javascripts/macbury_ninja create app/assets/javascripts/macbury_ninja/.keep create bin create bin/rails run bundle install

This will create macbury_ninja directory with required files. After this we can add engine to our rails application. We do it by adding to Gemfile line like this:

group :development, :test do gem "macbury_ninja", path: "/home/macbury/Projects/macbury_ninja" end

First we add name of generated engine(mosstly is the same as directory of engine, but if you are not sure, check .gemspec file), path parameter points to directory with our engine. With this we dont need to build each time a gem.

Now we need add phaser.js to our application. Thankfully there is a gem with phaser.js for rails asset pipline: https://github.com/meinside/phaser-rails.

Simply add it to engine gemspec file and bundle your rails application.

$:.push File.expand_path("../lib", __FILE__) # Maintain your gem's version: require "macbury_ninja/version" # Describe your gem and declare its dependencies: Gem::Specification.new do |s| s.name = "macbury_ninja" s.version = MacburyNinja::VERSION s.authors = ["macbury"] s.email = ["[email protected]"] s.homepage = "http://macbury.ninja/" s.summary = "Simple Game" s.description = "Simple Game" s.license = "MIT" s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] s.add_dependency "rails", "~> 4.1.4" s.add_dependency "phaser-rails", "~>" # Add here phaser gem end

Rails don’t require automatically libraries from rails engine gemspec. We need to do it manualy. The simplest way is to add require to engine lib/engine_name.rb file which for us should look like lib/macbury_ninja.rb:

require "macbury_ninja/engine" require "phaser/rails" # Added here phaser module MacburyNinja end

Create now file game.js in engine app/assets/javascripts/macbury_ninja/ with required phaser.js:

//= require phaser

Finnaly we should be able to add our game file to our main rails application.js file:

//= require jquery //= require jquery_ujs //= require macbury_ninja/game

Source code

  • Last update: ( almost 3 years ago )
  • Size: 128 Bytes