Giter Club home page Giter Club logo

hkoscon2017-haxe-game's Introduction

HKOSCon2017 Haxe Game Workshop

Join the chat at https://gitter.im/hkoscon2017-haxe-game/Lobby

Workshop info: Build a cross-platform game in Haxe

This is an agar.io clone to demonstrate the capability of Haxe in building cross platform games, where codes are shared among multiple game platforms (web, mac, windows, android & ios), as well as between game client and game server for multiplayer games.

Demo: https://kevinresol.github.io/hkoscon2017-haxe-game/ (single player mode)

Preparation

Participants should have programming experience with at least one programming language. Proficiency with JavaScript, Java, or C# is ideal, but experience with other languages such as C/C++, Python, or Ruby is also sufficient. Participants should have some familiarity using the command line. Participants should bring their own laptop computer, with either Windows, Mac, or Linux installed.

Please follow the instruction listed below before the workshop, such that you can progress smoothly.

Install Haxe

Get Haxe from http://haxe.org/download/.

Install Node.js

Get Node.js from https://nodejs.org/, and optionally yarn.

Install Git (used by snowfall)

Get Git and make it available in the command line. i.e. git --version should print something like git version 2.7.4.

Install Haxe Libraries

Note: if it is the first time you are using haxelib, you will have to run haxelib setup first.

Install Visual Studio Code

Although in theory you can use any IDE or text editor, we recommend using Visual Studio Code with the Haxe Extension Pack, which offers the best Haxe support at the moment.

Install C++ development tools

(Optional, for building native targets, e.g. mac, windows, linux, ios, android) Depending on your OS, Visual Studio (Windows), XCode (Mac), or gcc (Linux).

Notes

We will introduce Haxe and go through creating a simple multi-player game during the workshop together. The instruction will be given during the workshop. Below are some notes for future reference.

quick links

Server

haxe server.hxml
cd bin/server
npm install ws # or `yarn add ws`
node server.js

Client

haxelib run flow run web
haxelib run flow run mac
haxelib run flow run windows

By default the game client is built for multiplayer mode (yes, multiplayer/singleplayer is determined at compile-time for simplicity). To build for single player mode, simply go to project.flow and comment out the MULTIPLAYER flag:

// defines : ["MULTIPLAYER"],

To give proper code completion, VS Code needs a hxml file, which can be generated by

haxelib run flow info [web|windows|mac|linux] --hxml > client.hxml

See https://github.com/vshaxe/vshaxe/wiki/Framework-Notes#snow.

Shared Code

The World class contains the core game logic. When the game is set to single-player mode, the World is run in the client. In other words, the same piece of Haxe code for the World class is compiled into different platforms (web, mac, windows, android & ios). When the game is in multi-player mode, the World is run on the server. Again, the same piece of Haxe code for the World class is compiled into the server language (nodejs for our choice here).

The Command and Message enums represents the protocol between the client and server in multiplayer mode. The same piece of code is used in both client and server.

Feedback / Questions

Feel free to open issues or contact us directly.

License

CC0
To the extent possible under law, Andy Li & Kevin Leung has waived all copyright and related or neighboring rights to "Build a cross-platform game in Haxe" workshop. This work is published from: Hong Kong.

hkoscon2017-haxe-game's People

Contributors

andyli avatar kevinresol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.