Unity3d games development

Constantine Khorunzhev
... and Four Arctic Foxes ...


Client-server Slot machine applications prototype

cross-platform semi-factured product /framework prototype

   Client part is implemented with Unity3d.
Simplest server application is developed with Node.js.
Art is placeholders only (just for demo purposes),
corresponds to Flash versions of "Dolphins Pearl" slot machine
and WILL BE REPLACED for any real application

    This is application to demonstrate the developed by me prototype of client-server framework/semi-factured product with architecture designed to fast creation of set of slot-machines.

    It can be both web application for your site or mobile application.

    This application designed as modular and event-based, which gives extreme flexibility for fast modifications: any number of reels, any number of lines... This flexibility is achieved by following architecture: most of modules (including the module which interacts with server) are isolated to each other and related only with events and mediators (wiki) and other appropriate design patterns like commands (wiki) . So to produce new slot machine game any module could be easy replaced if necessary without affecting other modules. For a sample, instead of component which interacts with server to got the results of spins and size of win from server, it can be used the component which calculates the spin results locally. So it could be used to develop standalone applications too with modification of single module.
    Moreover, this application contains a set of Unity3d Editor add-ons which designed to faster replacing the art to produce new applications.
    This is 2D slot machine, but significant part of its code (like interaction with server, events system and other) could also be used to develop 3d slot machines. I mean the slot machine as 3d item like in this proof of concept for 3d reels proof of concept.
    Actual stage of development: it is paused right at the place at which your as potential customer can provide to me the concrete requirements:
  -   will it be the client-server application or I should develop standalone application.
  -   Should it be mobile application, web application for web site or Facebook application (so I should integrate it with Facebook).
  -   Which additional games (like games for doubling the win) should be developed inside the game.
  -   Contains some bugs, basically UI-related. Bugs will be fixed during adopting to concrete requirements.
  -   Questions of security: will it be the gambling for real money or something like the game for "stars" only or other virtual prizes.

You can hire me to fast develop for you the game or set of games following your concrete requirements..

As this framework was developed by me from scratch so I don't have the problems in any modifications to it, it save some yours time and money.

Of course, the full sources could be provided on non-exclusive basis if necessary. But the final games with your exclusive art will be yours and only yours.

Architecture of this prototype

  • Test server application. I have developed this application to reduce dependency between development of client part (i.e. slot machines itself) and server application development. It allows fast implement any JSON-based protocol and test the interaction with client application while server application development even not started. Of course, development of server application is under responsible of server application developer of customer (as can contain some secret parts).
      This server application is developed with Node.js, but real customer server application could be developed with any program language which allows to implement usual web services.
        Actual JSON-based protocol you can see at my server application test page. Of course, customer can require his own protocol.
    This is not the problem. This test server application was designed to be easy adopted to ANY JSON-based protocol so it could be great as tool for exact documentation of protocol. Of course, it could be easy replaced with component which contains any other JSON-based protocol.
        And for security reasons in addition to https your as customer also could require implementation of additional encryption. It is possible too. For instance, server and client could interacts with wrapped in simplest JSON encoded blocks which contains encrypted string with real JSON object.
  • Client-side module of Interaction to server. It is designed to isolate the details of interaction with server and even existence of server. It receives the "commands" as usual C# objects and returns responses as usual C# objects so all changes related with to sever will be concentrated here. To make this application standalone it is enough to replace this module
  • Reel. This is flexible module which implements the basic functionality of one reel like rotation, start/stop on events (and show exactly those pictures on stop which was required), create the reel with parameters like number atlas of sprites and other settings which this reel got from reels block component. So really all reels are fully independent to each other and managed by events. As the result the slot machine could be easy modified to contain ANY number of reels and with any positions and art
  • Reel block - provides info to its reels and some logic like "on stop reels event stop every 1 second reels from 1 to 5". It could be several reel blocks with different logic.
  • Buttons block, Front panel, lines panel, logic processor and some others. All modules designed to be easy modified with minimal influence to others.
  • Game art definition. Module which provides information to build other modules together with concrete art. So it is possible to use single scene to produce absolutely different slot machines just by activation different game art definition objects
  • Unity3d Editor add-ons. This is productivity tools like buttons panel editor which simplify assigning of events identifiers to buttons, lines panel editor, reels editor an others. Part of appropriate functionality is based on names of sprites in atlas, so most significant time saving effect can be achieved if names of source images (or names of layers in Photoshop file) are standardized.