Por que eu devo ler este artigo:O desenvolvimento de jogos digitais representa atualmente uma grande fatia do mercado de software mundial, rendendo vários milhões de dólares todos os anos.

O conhecimento de práticas e ferramentas voltadas para o desenvolvimento de games, algumas das quais serão abordadas neste artigo, permitem ao desenvolvedor ingressar nesse eixo do mercado, tornando-se parte dessa tendência mundial bastante lucrativa.

Além disso, a programação de games leva o programador a aperfeiçoar suas capacidades técnicas de programação, uma vez que um jogo, apesar de bem diferente da maioria das aplicações comerciais com as quais estamos acostumados, também é um software e como tal pode fazer uso da Programação Orientada a Objetos, boas práticas de programação e Padrões de Projeto.

Todos os anos, a indústria de software alcança novos patamares em todo o mundo e novas possibilidades surgem para usuários e desenvolvedores, que se beneficiam da tecnologia tanto para uso pessoal, quanto profissional.

O acentuado crescimento do número de dispositivos inteligentes que utilizam softwares, tais como notebooks, tablets, smartphones, smartwatches, TVs, consoles, etc., acelera ainda mais esse mercado, uma vez que se há o dispositivo, há também a necessidade de programar suas funcionalidades.

A indústria de games, que também faz parte da indústria de softwares e aplicativos, não poderia ser diferente. Dia após dia observamos o crescente número de adeptos aos jogos eletrônicos e o aperfeiçoamento dos gráficos e funcionamento desse tipo de aplicação, que funcionam não só como divertimento, mas também como ferramenta educacional e de auxílio em diversas áreas, como no tratamento de pacientes com dificuldades motoras.

Do ponto de vista do profissional (ou aspirante) dessa área, o mercado de games tem se mostrado bastante rentável e desperta otimismo. Segundo a Abragames (Associação Brasileira de Desenvolvedores Games), a indústria de jogos eletrônicos no Brasil tem apresentado crescimento de 9% a 15% nos últimos cinco anos, o que representa um cenário animador para as empresas que já estão no ramo e para aqueles que desejam entrar.

Iniciar no desenvolvimento de games não é complicado, mas ao mesmo tempo requer um pouco mais de criatividade e habilidades gráficas do que geralmente são necessárias quando se está criando softwares de cadastros e relatórios.

Em grandes projetos geralmente se tem equipes multidisciplinares, compostas por designers, programadores, além de outros profissionais especialistas em som, história, e outras partes importantes do jogo.

Já no que diz respeito às ferramentas, existem atualmente diversas engines e bibliotecas com suporte a várias linguagens de programação, umas mais complexas, com editores próprios e bastante adequadas para jogos maiores que requerem melhores efeitos e física, como a Unity 3D e a Unreal Engine, e outras mais simples e leves, que são usadas dentro do Visual Studio e representam boas escolhas para jogos mais simples e para o aprendizado, como a SFML.NET, que será o foco deste artigo.

Também no Visual Studio, uma outra opção bem interessante para quem está ingressando na área é o MonoGame, versão open source do framework XNA da própria Microsoft.

Ao longo deste artigo conheceremos melhor a biblioteca SFML.NET, suas classes e como trabalhar com alguns dos principais elementos utilizados em jogos, como sprites, janelas, shapes e eventos de interação com o usuário.

SFML.NET

A biblioteca SFML (Simple and Fast Multimedia Library) foi originalmente desenvolvida para a linguagem C++, concorrendo diretamente com outras bibliotecas bastante utilizadas, como SDL e Allegro. Visando expandir o alcance da biblioteca, foram criadas versões para outras linguagens, chamadas de bindings e que estão disponíveis para download na página oficial do projeto.

Os bindings para linguagem C (CSFML) e .NET (SFML.NET) são ditos oficiais, uma vez que são desenvolvidos e mantidos pelo próprio criador da SFML.

Os demais bindings (para Java, Go, OCaml, Pascal, Ruby, Python e várias outras) são desenvolvidos e mantidos pela comunidade e possuem seus próprios sites oficiais, mas são listados no site da própria SFML, de forma a reunir todas as iniciativas acerca dessa biblioteca.

A SFML.NET foi desenvolvida com base na CSFML, o que a torna compatível com outras plataformas e permite que seja usada no Mono (BOX 1). Esse binding não possui ainda uma documentação oficial online, porém, por ser extremamente semelhante à versão em C++ (SFML), a documentação desta pode ser consultada como base e certamente provê bastante informação a respeito da estrutura principal da biblioteca, seus esquemas de nomenclatura e exemplos práticos, que podem ser facilmente convertidos para .NET.

BOX 1 Projeto Mono

Atualmente patrocinado pela empresa Xamarin, o projeto Mono é uma implementação open source do .NET Framework cujo objetivo é permitir o desenvolvimento de aplicações multiplataforma utilizando os recursos do .NET, que originalmente alcança apenas ambientes Windows.

Com o Mono é possível desenvolver aplicações .NET no Linux e Mac, obtendo resultados muito semelhantes aos que se obtém no Visual Studio em ambiente Windows.

As Listagens 1 e 2 mostram o código equivalente em C++ e C# para criar uma janela e exibi-la na tela, permitindo ao usuário movê-la e fechá-la.

Listagem 1. Criando e exibindo uma janela em C++ com SFML
 

 int main()
 {
     sf::RenderWindow window(sf::VideoMode(800, 600), "My window");
     while (window.isOpen())
     {
         sf::Event event;
         while (window.pollEvent(event))
         {
             if (event.type == sf::Event::Closed)
                 window.close();
         }
         window.clear(sf::Color::Black);
         window.display();
     }
     return 0;
 }
 
Listagem 2 ...

Quer ler esse conteúdo completo? Tenha acesso completo