Code Monkey home page Code Monkey logo

ultimaphp's Introduction

UltimaPHP - Ultima Online OpenSource Server

UltimaPHP is a modern Ultima Online server written in PHP 7.0.

This server was created for thoes who ever wanted to create differend addaptations on the core of your shard.

I decided to build this project for study propose i've re-scripted the entire socket server to understand how it works and after that i decided to create a lightweight standalone version of the server that runs in any OS easly.

Note 1: The server works with clients 6.0.13 or greater, since this version many packets was changed and we will not spent time with older clients for now.

Note 2: I'm developing using the Ultima Online Classic Client Patch version 59 - 7.0.20.0

How to install?

First of all you will need to install PHP 7.0 or greater and MongoDb 3.4+, I reccomend you to use PHP 7.1 it's ultra fast and lightweight, for that:

After install PHP and MongoDB on the machine, edit the file ultimaphp.ini as you wish, create a mongodb database named "ultimaphp" (or anyone, just need to change at the ultimaphp.ini) and create/import all collections from tools/Mongo Database/*.json (file name is the collection name) and follow the next steps to start the server:

Note 1: You can use some program to visualize and work with mongodb like: RoboMongo or MongoChef

Note 2: The default owner account/password in the database is: test/test

Note 3: The default player account/password in the database is: test2/test

Note 4: Passwords is allways stored in MD5 encryption both in database and in server variables

Note 5: UltimaPHP only works (till now) with no-encrypted clients.

Linux

  • Open the terminal and navigate to the root folder of UltimaPHP project
  • Type: php7.0 startserver.php

Mac

  • We need someone with mac to help us :)

Windows

  • Open the run dialog (SUPER+R) and type cmd then run
  • Navigate to PHP installation folder cd c:\php\installation\folder\
  • And start the server php.exe c:\ultimaphp\instalation\folder\startserver.php

Base PHP compilation

For those, like me, who preffer to use an most performatic standalone PHP, with only what it really needs

./configure --prefix=/usr --with-config-file-path=/etc --enable-sockets --enable-bcmath --enable-mbstring --enable-zip --enable-pcntl --enable-ftp --enable-exif --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-mcrypt --with-iconv --with-zlib-dir=/usr --with-xpm-dir=/usr --with-openssl --with-gettext=/usr --with-zlib=/usr --with-bz2=/usr
make
make install

What is already working?

  • Classic client
  • 3D Client
  • Login
  • Create Character
  • Open Paperdol (self/other players)
  • Open status bar (self/other players/mobiles)
  • Show all names (Players/other players/mobiles)
  • Add objects
  • Add mobiles
  • Login multiple chars
  • Equip item
  • PickUp / Drag / Drop item
  • Walk / Run in any world
  • Unicode Sysmessage
  • Where Command
  • Teleport command to any world
  • Invis command
  • Change mobile name
  • Change player name (if is GM)
  • Click on players/mobiles/objects
  • DClick on players/mobiles/objects
  • Open skills info
  • Emote
  • Talk

Usefull links that could help you code

Coding padronization

  • All .php files should start with <?php and end without ?>
  • All .php files should have the comment line header
  • All class names starts with UPPERCASE character, IE: class ClassName {...}
  • All method names must start with LOWERCASE character and all next words start with UPPERCASE character with no space, IE: goodMethodName()
  • All codes must be idented with tab
  • All codes must be formatted in K&R style before commited, manually or using your preffered tool

Database padronization

  • All data storage tables must have an ID indexed
  • All secure information, like passwords, must be stored encrypted
  • All relashionship must have an foreign key linkng the table columns
  • All tables names must be LOWERCASE and words separated with underline, IE: good_table_name

CodeFormatter PHP configuration default:

"codeformatter_php_path": "C:/php/php.exe",
"codeformatter_php_options":
{
    "indent_size": 1,
    "indent_with_tabs": true,
    "indent_style": "k&r",
    "newline_before_comment": true,
    "new_line_before": "",
    "new_line_after": "",
    "format_array_nested": true,
    "pear": true,
    "pear_add_header": "",
    "pear_newline_class": true,
    "pear_newline_trait": true,
    "pear_newline_function": false,
    "pear_switch_without_indent": false,
    "lowercase": true,
    "fluent": false,
    "list_class_function": false,
    "equals_align": false,
    "phpbb": false,
    "space_in_paren": false,
    "space_in_square": false
}

Authors

  • João Escribano - Brazil
  • Maurício Nunes - Brazil

ultimaphp's People

Contributors

joaoescribano avatar mbnunes avatar

Watchers

James Cloos avatar Luis Paulo 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.