Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Tree [r25] /
History



File Date Author Commit
etc 2010-10-10 latcarfe [r25] typo
src 2010-10-10 latcarfe [r24] adding esperanto
COPYING 2010-06-05 latcarfe [r2] COPYING and README added
Makefile 2010-06-17 latcarfe [r12] Player 2 support and internationalisation, not ...
README 2010-10-10 latcarfe [r24] adding esperanto
SMLanProtocol.txt 2010-10-10 latcarfe [r24] adding esperanto
TODO 2010-10-05 latcarfe [r22] 'welcome' and 'about' messages

Read Me


                                * * * * * * * *
                               * * * * * * * * *
                              * *   SMOCaml   * *
                               * * * * * * * * *
                                * * * * * * * *


Description
===========

    SMOCaml is a server for StepmaniaOnline written from scratch in OCaml.
    It is fully compatible with SMOnline and Stepmania 4 so it can be used to
    replace the old SMOnline server.


Compilation
===========

    You will need OCaml to compile the server.
    Un-tar the archive and type 'make' in the directory, an executable called
    'smocaml' will be created.


Usage
=====

    Run 'smocaml', it will listen for inbound connections at TCP/8765 (or the
    port specified in the 'config.ini' file). Then every player can run
    stepmania and enter the IP or DNS address of the computer where 'smocaml' is
    running (every username with any password will be accepted)


Configuration
=============

    All config files are in the same directory, specified at the beginning of
    the 'main.ml' source file.

   * 'config.ini'    : main config file, you *will* want to customize the 'name'
                       field, and may want to change other things (for example
                       the language of the server)
   * 'rooms.conf'    : default static rooms, you *will* want to configure this
   * 'messages.lang' : welcome and about messages, you *will* want to configure
                       this
   * '$lang.lang' (where $lang is the value of the field 'lang' in 'config.ini')
                     : all other messages of the server, you will probably not
                       need to modify those files unless you are planning to add
                       a new language


Development
===========

    SMOCaml is young but almost fully usable. It works just fine with two
    players but has never been tested with more. But normaly it should work as
    well.


Features
========

  * Rooms should be fully supported

  * The song selection system is completely different than the one of SMOnline :
    every player in a room can propose a song, then every other player
    (including the first one) can confirm and start this song, then the song does
    not start immediately but after a countdown of 3 seconds, and every player
    can cancel the song during the countdown

  * In the chat, the server is much more colorful than the original SMOnline
    server

  * One can change the color of his name in the chatbox with the command /color
    :D

  * Available in french, esperanto and english, and other languages can be
    easily added


Known bugs and limitations
==========================

  * No login system, any username with any password is accepted

  * No stats

  * Not very well tested, so there could be others bugs


Licence
=======

    SMOCaml is released under an MIT license, see the file 'COPYING'.


Contact
=======

    You can contact me by mail at guillaume.brunerie@[gmail.com|ens.fr], and you
    will find the SourceForge.net project page of SMOCaml at
    https://sourceforge.net/projects/smocaml/




Structure of the source code
============================

    src/ contains the source code and etc/ the config files

    types.mli:
      Definition of the basic types used, like a 'song', a 'player', a 'room',
      and so on

    common.ml:
      A few useful definitions

    rooms_config.mll:
      Parser for the 'rooms.conf' config file, describing the default rooms

    lang_config.mll:
      Parser for the '*.lang' config files

    config.mll:
      Parser for the 'config.ini' file

    C2S.ml:
      Type of Client-Server packets and function translating raw data into
      packets

    S2C.ml:
      Type of Server-Client packets and function translating packets into raw
      data

    network.ml:
      Functions for accepting connections, listening for C2S packets and sending
      S2C packets

    functions.ml:
      Chat and updating functions

    lang.ml:
      Functions handling the escape sequences in '*.lang'

    player.ml: (most important file)
      Function reacting to the received packets

    rooms.ml:
      Function sending the scoreboard updates

    main.ml:
      Loading of config and starting of main threads