Palavra:   

Revista PHP / PHP

Thiago Freitas

Cursando Sistemas de Informação - Analista e engenheiro de software - Certificação RM - Otimização Web - Consultor - Webdesign. Programador PHP, C#, AJAX, JavaScript, C/C++, SmallTalk. Bancos Mysql - SQL - Oracle - DB2

Desenvolvendo jogos “Tick based” com PHP

Este artigo trata-se sobre a teoria de jogos Tick Based. A popularização desses jogos se tornou um novo fenômeno de passa-tempo na internet. Passa-tempo para alguns, vícios para outros. Jogos como Travian, Primórdio, The Crims, recebem centenas de visitas ao dia. De certa forma empresas acharam maneiras de lucrar com esses games on-line, claro, eu não vejo por que não lucrar com um trabalho, mas neste caso existem outras recompensas. Esse artigo trata o principio da criação de um destes games com o PHP, tais como suas técnicas e também como desenvolver uma amigável interface.
Voltado para pessoas com alguma experiência em PHP, já que o artigo não trata explicações referentes a linguagem PHP.

Iniciando

    A primeira parte do desenvolvimento de um jogo é sem sombra de duvidas o seu projeto, não que me entendam mal, quando digo projeto me refiro não a maneira como ele será desenvolvido nem tão pouco qual banco de dados usarem ou qual linguagem mas sim a historia do jogo, qual a estratégia dele, o enredo. Para um jogo bem sucedido, devem ter uma jogabilidade, regras e historias interessantes. Como não é o objetivo deste artigo ensinar a escrever jogos, só posso dizer, boa imaginação.

Escolhendo as ferramentas

Banco de dados
Por experiência própria eu aconselho como banco de dados Mysql, por 3 motivos:
1° - gratuito.
2° - É o banco de dados mais rápido para se usar na internet, perdendo apenas para o Oracle
3° - A produtividade com o PHP é extremamente eficiente e eficaz.

IDE PHP
    Eu particularmente gosto do Eclipse, mais nesta parte deixo por conta de vocês

Framework
    Eu acho que seja até obrigação o uso do Ajax nestes tipos de jogos, então aconselho o framework XJAX.

Mão na massa

    Então já temos as ferramentas, a historia de nosso game, hora da mão na massa. A função mais usada será:
       
            mysql_query(“comando mysql”);

Sem sombra de duvidas. Mais por quê? Um jogo tick based na verdade é busca e inserção no banco de dados, é algo simples assim. Exemplo prático, um jogo de guerra quando um reino ataca o outro, na verdade você busca no banco de dados os dados do Reino A, os dados do Reino B e através das regras de seu jogo você faz as baixas de ambos e inseri no banco de dados às alterações.
    Vamos fazer um exemplo pratico?
  1. <?
  2. $conexao = mysql_connect(“localhost”, “root”,”root”);
  3. mysql_select_db(“wargame”);
  4.  
  5. $dados_reino_a = mysql_query(“SELECT * FROM tblexercitos(numexercito) where idexercito = $sessao_user_id);
  6. $dados_reino_b = mysql_query(“SELECT * FROM tblexercitos(numexercito) where idexercito = $sessao_reino_atacado);
  7.  
  8. $baixas_exercito_a = $dados_reino_a[0] - $dados_reino_b[0];
  9. $baixas_exercito_b = $dados_reino_a[0] - $dados_reino_b[0];
  10.  
  11. if($baixas_exercito_a < 0)
  12. $baixas_exercito_a = 0;
  13. if($baixas_exercito_b < 0)
  14. $baixas_exercito_b = 0;
  15.  
  16. mysql_query(“INSERT INTO tblexercitos(numexercito) values($baixas_exercito_a) where idexercito = $sessao_user_id);
  17.  
  18. mysql_query(“INSERT INTO tblexercitos(numexercito) values($baixas_exercito_b) where idexercito = $sessao_reino_atacado);
  19.  
  20. ?>
Explicando melhor, as regras deste exemplo são bem simples, os exércitos possuem um numero de soldados, quando um exercito ataca outro o que acontece segundos as regras é a subtração, ou seja, ganha quem tem maior quantidade de exercito.

A variável $dados_reino_a armazena o numero de exércitos que o jogador possui. Eu identifico o exercito do jogador no banco de dados pela variável $sessao_user_id, é uma variável que armazena por “session” o ID do usuário quando ele loga no jogo.

O mesmo acontece com o $dados_reino_b que armazena a quantidade de exercito do reino que o jogador esta atacando. Este eu identifico por uma variável chamada  “$sessao_reino_atacado”, que também guardo por “session”, que armazena o ID do reino atacado, vamos supor que o usuário escolheu qual atacar por algum checkbox em uma tabela.

Faço as baixas, e se o numero de qualquer um dos exércitos for menor que “0” (ficou negativo) eu insiro “0” e logo em seguida armazeno no banco de dados.

Conceitos avançados

    Você deve ter começado a entender como são feitos esses jogos, o que mostrei acima foi a teoria geral, no fundo, este é o “núcleo” destes jogos. Você já deve ter começa a pensar em muitos jogos, sua cabeça deve estar a mil, e tem que estar sim, lembre-se, grandes homens se dão bem na vida por idéias de impulso, e é pra te dar um empurrão que também trarei de assuntos mais avançados, que são:

•    Regras de jogo
•    Interface
•    Segurança
•    Financeiro
•    Alem do jogo (interatividade)


Regras de jogo

    Na verdade a historia é imprescindível em um jogo deste tipo, porem, mais importante que a historia é as regras, são as regras que definem todas as ações do jogo, e claro, as regras que dizem se seu jogo será ou não popular. Faça regras que possibilite o jogar a fazer uma infinidade de estratégias e ações, e apresente as regras de forma clara e simples.

Interface

    Um site bonito, agradável e de excelente navegação é mais pontos para o jogo, lembre-se no Brasil o numero de pessoas com banda largas é grande, mas o numero de pessoas com internet discada ainda é grande também, faça algo que seja rápido para carregar, navegação simples.

Segurança

Eu particularmente utilizo “session”, mas existem diversas formas e jeitos, e cada um tem o seu, por isso deve-se estudar a segurança, para evitar dores de cabeça, estudo como funciona XSS, cuidado com seus códigos, um jogo seguro é um jogo bem feito.

Financeiro

    Posso já adiar algum gasto seu. Supondo que você montará seu layout do site, seu sistema php, você só terá gasto anual com o domínio, se for .com.br o preço é de R$ 30.00 (preço cobrado pelo http://registro.br/) e um pouco menos para .com. Você terá um gasto mensal de hospedagem, que sai por volta de R$ 15.00 mensais.

Alem do jogo (interatividade)

Pense em algo que não se vê em outros jogos. Deixe a interatividade de seu jogo se elevar, pense em varias possibilidades, jogos diferentes são tratados diferentes, jogos comuns, são jogos “passa tempo”.

Espero que tenha gostado desta introdução, duvidas estou a disposição, será um excelente prazer, meu e-mail é thiagosistemas3@gmail.com

Opções de Interação

Comentários

Bom, porém
Por: Antônio, 15/08/2009   05:20:17
o artigo poderia ser bem mais extenso! Não deixa de ser bom, mas foi muito informativo.
webgame
Por: Alexandre, 08/07/2009   13:44:02
Estou desenvolvendo um webgame.. ja estou mais avançado, passei dessa parte eheheh vou entrar em contato com vc para trocarmos uma idéia
muito bom
Por: jessica, 02/11/2008   14:44:54
adorei seu artigo,

realmente achei bem informativo
se puder entra em contato cmg. queria lhe pedir 1 favor
Muito Legal
Por: Diego, 23/09/2008   09:20:53
Primeiramente parabéns pelo artigo.
Eu estava interessado em saber como era desenvolvido esses jogos. E seu artigo fui muito util para mim.
muito legal
Por: renato, 09/09/2008   08:17:57
show thiago gostei do artigo muito bem explicado ;)