Adicionar suporte para um novo jogo
Requisitos
- Um acesso a um terminal para executar comandos como
php -v
e estar um pouco familiarizado com a programação
Se você tiver o Azuriom instalado, pode pular para a etapa de configuração.
Se você nunca instalou Azuriom, você precisa instalá-lo. Durante a instalação, ele solicitará que você escolha um jogo.
Você navegará até a URL /install/game/custom
. Com isso em mente, agora você pode seguir as instruções de instalação.
Uma vez instalado o Azuriom, você pode executar o seguinte comando em um terminal para criar um usuário administrador:
php artisan user:create --admin
Configurando
Você pode executar o seguinte comando para gerar o layout do projeto para o seu jogo, com MyNewGame
o nome do seu jogo:
php artisan game:create MyNewGame
Conectando Azuriom a um jogo
Usando banco de dados personalizado
Vá para plugins/mynewgame/src/Providers/MyNewGameServiceProvider.php
e edite o arquivo
Em use Azuriom\Extensions\Plugin\BasePluginServiceProvider;
cole use Illuminate\Support\Facades\DB;
Agora localize o método boot
e em $this->registerUserNavigation();
adicione $this->setupDatabaseConnection();
Agora você pode colar a função abaixo logo abaixo do }
do método de boot:
protected function setupDatabaseConnection()
{
$driver = 'mysql'; // Can also be pgsql, sqlsrv
$config = config('database.connections.'.$driver);
/**
* To use credentials in the .env file, you can use your plugin's config file.
* in plugins/mynewgame/config/azuriom_mynewgame.php, you will see by default only one 'custom_config' key,
* but you can add more like: 'CUSTOM_DB_ADDRESS' => env('CUSTOM_DB_ADDRESS', '127.0.0.1')
*
* To access it: config('azuriom_mynewgame.CUSTOM_DB_ADDRESS');
*
*/
$config['host'] = config('azuriom_mynewgame.CUSTOM_DB_ADDRESS');
$config['port'] = config('azuriom_mynewgame.CUSTOM_DB_PORT');
$config['username'] = config('azuriom_mynewgame.CUSTOM_DB_USER');
$config['password'] = config('azuriom_mynewgame.CUSTOM_DB_PASSWORD');
$config['database'] = config('azuriom_mynewgame.CUSTOM_DB_DATABASE');
config(['database.connections.my-custom-connection' => $config]);
DB::purge();
}
Agora você pode criar seu primeiro modelo usando sua conexão de banco de dados do jogo. Vá para plugins/mynewgame/src/Models
, crie um novo arquivo Character.php
e adicione o seguinte código:
<?php
namespace Azuriom\Plugin\MyNewGame\Models;
use Illuminate\Database\Eloquent\Model;
class Character extends Model
{
protected $connection = 'my-custom-connection';
}
Agora edite plugins/mynewgame/src/Controllers/Admin/AdminController.php
e em use Azuriom\Http\Controllers\Controller;
, adicione use Azuriom\Plugin\MyNewGame\Models\Character;
Em seguida, substitua a função index
por:
public function index()
{
$characters = Character::paginate();
return view('mynewgame::admin.index', ['characters' => $characters]);
}
Agora, para mostrar os caracteres em seu menu de administração, edite plugins/mynewgame/resources/views/admin/index.blade.php
e substitua <p>Esta é a página de administração do seu plugin</p>
por:
@foreach($characters as $character)
<p>{{$character->name}}</p> {{-- "name" can be any properties from you database --}}
@endforeach
{{ $characters->links() }}
Usando Rcon/API e/ou para executar comandos
Vá para plugins/mynewgame/src/Games/MyNewGameServerBridge.php
e dê uma olhada no conteúdo.
Para ter um exemplo do mundo real, você pode dar uma olhada em:
- Jogo Dofus que usa uma conexão SSL para enviar comandos para o servidor do jogo
- Jogo Flyff que usa uma codificação personalizada e proteção com uma senha. (Também envia itens para o banco de dados como mecanismos de fallback).
Dentro do método sendCommands()
, você deve controlar se um jogador está conectado no jogo ou não e tomar as ações apropriadas como aqui no jogo flyff.