Seafarer's Journey

An infinite multiplayer runner game (which is pirate themed) built in one weekend for the Baltimore Hackathon.

Try the game on your machine: 1) Connect to DHFTC 2) In your web browser, go to 192.168.1.241:8080

Summary: The overall goal for the weekend was to make a fun game that we could share and play with our friends. We decided that we wanted to program for fun again. We spend so much time working on corporate projects or college projects that we wanted to take this opportunity to just develop something that is fun to make and use. We also wanted to incorporate the pirate theme of the hackathon into our project. Our end product: An infinite pirate themed side scroller.

How we prepared: Prior to Friday, we installed the API's we planned on using for the hackathon and set up a git repository to help us coordinate as we build our game. We began this weekend with nothing more than a dream and a good night's sleep.

Tools we used: We used and integrated multiple open source APIs to help us build our game.

  • Node.js: "A JavaScript runtime built on Chrome's V8 JavaScript engine"(*description taken from node.js webpage)
  • Express.js: Allows Webserver functionality
  • Phaser.js: An html5 game engine
  • Socket.io: Provides server/client functionality

All our graphics were generated using the beta version of Pyxel Edit. This tool allowed us to generate all the sprites and images displayed in Seafarer's Journey.

Where are we sitting: The far corner of the gym, next to the door to outside

What would you like to do if you had more time/money? Future goals would be to host the game on a public webpage so more people could enjoy our hard work. Another thing that would be nice is improving the graphics by adding more details and making more sprites.

Challenges we ran into: One of the biggest challenges we ran into was setting up the server/client relationship to get other players to show up as a sprite in our world. Being able to send their position so that we could view them updating in real time was a tricky problem.

Accomplishments that we're proud of:

  • Ability for anyone on the network to connect to the game
  • Other players showing up in our game instance where they are on the level.
  • Parallax style background moving at various speeds
  • 100% custom artwork made exclusively during the hackathon.

What we learned: Dave - Fun programming is still hard programming. Matt - Graphics take a lot of time and patience.


Installation

Install node.js

Run the followng commands using npm:

  • npm install phaser
  • npm install express --save
  • npm install socket.io

On Windows, you may have trouble using npm to install socket.io (may be fixed sometime soon) with nodejs 4.0.0. As a temporary workaround, do the following:

Depending on the date, a simple:

  • npm uninstall socket.io
  • npm install socket.io

may fix your issue - if the change to socket.io has been published to npm. If not, do the following:

  • Go to C:\Users\%YOUR USERNAME%\node_modules\socket.io\package.json
  • Change the engine.io dependency from 1.5.2 to automattic/engine.io#7e77dd5
  • After that edit, cd into your node_modules\socket.io directory, and run npm install --production

Click here to read more.

Usage

cd into the downloaded repo and run:

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Credits

Written by David Kramer and Matthew Hammel in one weekend.

License

The MIT License (MIT)

Copyright (c) <2015>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Share this project:

Updates