Programando Midgard

Olá pessoal!

Passando por aqui para dar algumas notícias do projeto. Fiz os assets do protótipo, demorei cerca de 3 horas. Segui a dica do Frederick Kramer Dal Prá e usei muita coisa disponível no OpenGameArt.Org. Ficaram bem menos toscos do que os criados em 50 minutos para o The Little Viking 😀

Dai cai de cabeça na programação muito mais hardcore que os outros meses porque agora meus amiguinhos é C++ nada de GameMaker. Coloco abaixo no formato de uma lista o que ando programando:

  • Uma arquitetura geral para criar games em 2D em C++. A inspiração é a libEGL criada pelo Prof. Farlei Heinen. Uma   solução 2D fácil de ser usada por iniciantes. Tentei usar diretamente a libEGL, mas como ela não é uma DLL, mas sim uma lib estática na hora de criar as unidades customizadas não rolou. Então estou usando a libEGL como modelo e a cocos2D como base arquitetural. Para a opção de render 2D, eventos, rede, sons adotei a SFML (Simple Fast Multimedia Library) por incentivo do Edimartin Martins. Larguei de mão a SDL. O build da solução gera uma DLL que depende das DLLs da SFML;
  • Nessa arquitetura já implementei cenas, camadas, sprite e estou iniciando tilemaps, lendo o formato usado pela libEGL;
  • A criação do jogo Midgard Zombies que usa esta solução 2D (por enquanto ainda não sei o que é, se será um pequeno motor ou se é uma biblioteca). Oferece interface virtual para customizar as unidades. O jogo consegue carregar e efetuar o binding dinâmico de classes herdadas dessa interface e disponibilizada em DLLs;
  • Fiz um teste para criar uma unidade customizada a partir da interface oferecida pelo jogo. O teste gera uma DLL que deve ser colocada junto com o executável do jogo. Ao carregar a unidade customizada é integrada no jogo. É o mesmo mecanismo para fazer um plug-in.

Espero que até o final desta semana eu consiga disponibilizar um protótipo para vocês testarem.

Design pronto – Midgard Zombies!

Finalmente concluído os aspectos de design! O pior que na verdade o processo foi simples, faltou tempo para sentar e fazer. Isso é o mais preocupante. Oh my gosh!! faltam 11 dias para prototipar que Odin me ilumine hehe

3. Arte 2D

Metas Gerais

Tema: viking. Terra pós-apocalíptica, mistura de ruínas de cidades modernas com Idade Média.

Características: cartoon. Sempre mantendo uma pitada de grindhouse/pulp/vintage

Estilo: cartoon, meio oriental

Tom: sério, apesar de ser cartoon, preserva um clima mais sério, sem humor;

Cores: frias, tons pastéis, tonalidades mais cinzentas, mais sombrias. Sempre lembrando algo sem vida, morto, destruído.

Arte 2D & Animação

Terreno

Um tileset top view de uma região desértica com montanhas. Elementos que indicam a entrada das ondas de inimigos e elementos que indicam a fortaleza.

Unidades

As unidades serão compostas por pequenos sprites animados. A priori cada unidade pode ser composta por três camadas, as rodas, a base e os ornamentos. Nessas camadas terão locais fixos com pontos de ancoragem onde poderão ser fixadas sprites. Quando uma unidade se desloca ou gira a transformação é aplicada em todo conjunto.

  • Unidade de Defesa
    • Extratora
      • Extraindo
  •  Unidade de Combate
    • Rodas
      • Andando
    • Frente
    • Meio
    • Canhões
    • Projétil
  •  Comum
    • Destruida
Elementos de Gameplay
  • Zumbis
    • Andando
    • Atacando
    • Morto
  • Combustível
    • Cristal brilhando
  • Fortaleza
    • Intacta
    • Dano de 75%
    • Dano de 50%
    • Dano de 25%
    • Destruída
  • Peça
    • Cápsula com detalhes roxo
  • Item
    • Cápsula com detalhes laranja

4. Som e Música

Metas Gerais

Tema: épico

Estilo: viking metal

Tom: de grande batalha sombria, clima meio de terror, suspense

Sempre o som de base é o viking metal. Batalhas épicas, sangrentas, maior clima de combate nórdico.

Efeito Sonoro

Para a primeira versão do primeiro protótipo não será usado nenhum efeito sonoro.

Música

Tema dos Capítulos

Cada capítulo deve ter uma música tema. Todas as fases vão tocar a mesma música em loop.

5. Projeto de Níveis

Esboço

2013-03-20 01_37_05

Design – Mecânica e História

O negócio tá devagar. Estou postando a metade do design, falta as listas de assets e o projeto dos níveis. Segue a mecânica do jogo e um maior detalhamento da história

Midgard Zombies – Game Design Protótipo 0.1

Roadmap

Versão 0.1

  1. Dois mapas
  2. Dois tipos de unidades – prospecção e outra de ataque
  3. Um tipo de inimigo compondo a onda – zumbi comum
  4. Somente uma peça para ser prospectada

1. Mecânica de Jogo

Gameplay Central

  • Zumbis podem atacar as unidades e a fortaleza.
  • Se as unidades são destruídas são eliminadas permanentemente, mas as peças poderão ser recicladas
  • Se a fortaleza for destruída encerra a partida.
  • Se todas as unidades forem destruídas encerra-se a partida.
  • Condição de vitoria – derrotar todos os zumbis das ondas antes da fortaleza ser destruída.
  • Os terrenos possuem fontes de combustível, está localizada a fortaleza e existem pontos de entrada das ondas. Alguns terrenos não são transponíveis.
  • As peças estão enterradas nos terrenos. Os zumbis podem dar loot. Algumas peças podem consumir combustível. As peças são usadas para agregar melhorias nas unidades.
  • Os itens são consumíveis. Os zumbis que dão loot. Algum item pode consumir combustível. Oferecem alguma vantagem temporária.
  • Unidades de extração andam pelo mapa e prospectam peças e combustíveis, sendo capazes de extrair tais elementos. Consomem combustível. Podem ser melhoradas com peças e podem usar itens.
  • Unidades de combate andam pelo mapa e atacam zumbis. Consomem combustível. Podem ser melhoradas com peças e podem usar itens.
  • Unidades de defesa andam pelo mapa e protegem as unidades e a fortaleza. Consomem combustível. Podem ser melhoradas com peças e podem usar itens.

Personagens

Thialfi

Um poderoso líder neo-viking comanda uma tribo de nômades que estão refugiados em uma poderosa fortaleza. Carrega o poderoso martelo de batalha.

Skalfar

Capaz de animar e controlar os mortos. Faz experimentos bizarros. Usa sua legião de mortos para encontrar artefatos mágico. Está na procura do martelo de batalha.

Zumbis

Criaturas grotescas pútridas e cambaleantes. Existem zumbis de diferentes tipos. O mais comum são gerados a partir de cadáveres humanos. São comandados pelo feiticeiro. Devem atacar a fortaleza em busca do machado. Ao morrer os zumbis podem largar itens ou peças (raro).

 HP, Ataque, Defesa, Velocidade, Velocidade de ataque, Dano causado

Unidade de Defesa

Projetada para proteger a fortaleza e as demais unidades. Pode atrair os inimigos e conserta as unidades aliadas e a fortaleza.

HP, Defesa, Velocidade, Atração, Velocidade de conserto, Capacidade de conserto

Unidade de Combate

Projetada para atacar os inimigos.

HP, Ataque, Defesa, Velocidade, Velocidade de ataque, Dano causado

Unidade de Extração

Projetada para detectar e extrair combustível e peças.

HP, Defesa, Velocidade, Detecção, Velocidade de extração, Capacidade 

Elementos de Gameplay

Combustível

Uma fonte de energia existente nos terrenos que precisa ser extraída. É utilizada no funcionamento das unidades. Algumas peças e itens podem consumir combustível para serem ativadas.

Fortaleza

Ponto que necessita ser protegido no terreno. O combustível, peças e itens extraídos devem ser levados até a fortaleza. Caso seja destruída a partida encerra.

Terreno

É uma coleção de locais (tiles). Alguns são intransponíveis. Pode contar fontes de combustíveis e peças enterradas. Possui pontos de entrada para as ondas de inimigos.

Peça

Componente utiliza para agregar melhorias nas unidades. Podem ser extraídas dos terrenos ou pegas dos inimigos.

Item

Componente de efeito temporário nas unidades. São liberados pelos inimigos quando são destruídos. Podem ser pegos pelas unidades extratoras.

Física e Simulação

Movimentação

Simples sem simulação física realista. Pode girar 360º e avançar com uma determinada velocidade e evitando colisão.

Colisão

Colisão simples através de caixa de colisão.

Combate

O projétil quando colide com o ator retira uma quantidade de dano. A mesma coisa para arma de curto alcance. No caso de objetos que tiram dano basta colidir no objeto. Se a quantidade de dano for superior aos pontos de vida elimina o ator, senão reduz os pontos de vida do alvo. Quando uma unidade é destruída dá loot das peças. Os inimigos tem chance de dar loot de itens e/ou peças.

Inteligência Artificial

Zumbi

Os zumbis são bem simples. Seguem pelo caminho. Se encontram algum inimigo ou fortaleza (campo de visão ou colisão) param e ficam atacando

2. História

A humanidade sofreu um grande revés devido a uma mistura de guerra nuclear e apocalipse zumbi. Esse revés causou uma “volta” às raízes medievais e antigas do homem. A humanidade vive agora como se fosse tribos nômades, grupos muito semelhantes aos antigos vikings. Felizmente, alguns poucos sobreviventes mantiveram pequenos bolsões de conhecimento, suficientes para resgatar a tecnologia anterior ao apocalipse. No processo, devido a alterações no ambiente também decorrentes da guerra, alguns poucos descobriram a magia.

O personagem principal é Thialfi, o líder de uma dessas tribos de vikings nômades que acha uma antiga fortaleza em bom estado de conservação. Quando eles entraram na fortaleza, Thialfi arremessa Gramdung pra acabar com um zumbi que tinha lá dentro, só que o martelo segue voando e acaba enterrado no gerador da fortaleza, o que faz com que a energia retorne.

Mas a tribo está sendo caçada por Skalfar, um feiticeiro necromante que deseja roubar Gramdung, o martelo mágico de Thialfi. Juntando todo o seu conhecimento, os vikings mais inteligentes descobrem como reutilizar e remontar os dispositivos tecnológicos da fortaleza para melhor resistir aos ataques de zumbis cada vez mais perigosos. Com o tempo, o necromante fica mais poderoso e começa a incorporar tecnologia nos zumbis que usa pra atacar a fortaleza.

Midgard Zombies – Conceito Pronto!

Conceito de março está prontinho! Usei o mesmo formato enxuto que adotei em fevereiro para o The Little Viking. O tempo de elaboração do conceito foi terrível, passou para 8 dias. Em fevereiro levei 2 dias (claro estava de férias), meu contexto agora é bem diferente, repleto de chaotic days. Mas o conceito teve que passar por melhorias. O que estou considerando no momento é que em média um conceito leva 6 dias para ficar pronto. É um número que faz sentido, requer pesquisas, escutar opinião, estruturar, testar ideias iniciais.

O nome ainda tenho dúvidas. O que acham? O que me sugerem? É bem nome de projeto.

Créditos

Conceito: João Ricardo & Daniel Sallenave

História: Daniel Sallenave

Introdução

A humanidade sofreu um grande revés devido a uma mistura de guerra nuclear e apocalipse zumbi. Esse revés causou uma “volta” às raízes medievais e antigas do homem. A humanidade vive agora como se fosse tribos nômades, grupos muito semelhantes aos antigos vikings. Felizmente, alguns poucos sobreviventes mantiveram pequenos bolsões de conhecimento, suficientes para resgatar a tecnologia anterior ao apocalipse. No processo, devido a alterações no ambiente também decorrentes da guerra, alguns poucos descobriram a magia. O personagem principal é o líder de uma dessas tribos de vikings nômades que acha uma antiga fortaleza em bom estado de conservação. Mas a tribo está sendo caçada por um feiticeiro necromante que deseja roubar o machado mágico do viking-líder. Juntando todo o seu conhecimento, os vikings mais inteligentes descobrem como reutilizar e remontar os dispositivos tecnológicos da fortaleza para melhor resistir aos ataques de zumbis cada vez mais perigosos. Com o tempo, o necromante fica mais poderoso e começa a incorporar tecnologia nos zumbis que usa pra atacar a fortaleza.”

Mecânica: um tower defense com elementos de roguelike (unidades com habilidades especiais, destruiu nunca mais, inventário, loot de itens) na forma de um jogo de programação que o jogador irá programar as unidades, incluindo seu comportamento, usando diretamente C++.

Estética:  mantem o visual cartoon, com cut-out animation com algumas referências de uma estética pulp/grindhouse/vintage. A trilha sonora é o viking metal.

Tecnologia:  como tem um propósito didático será criado um pequeno motor exclusivo para o jogo em C++ utilizando como base a libEGL.  Acredito que o Game Maker não atenderia este conceito.

Contexto

  • Jogo desenvolvido para o desafio One Game a Month para o mês de Março/2013;
  • Espera-se desenvolver um protótipo que possa ser testado com os estudantes da atividade acadêmica Algoritmos e Programação em C++ do curso de Jogos Digitais/UNISINOS;
  • Um modelo de negócios baseado em capítulos, cada capítulo contendo uma série de mapas. O jogador poderá adquirir novos capítulos. É importante destacar que pela natureza deste jogo é necessário outro modelo de negócio, não monetizado diretamente pela venda direta do jogo.

Game Flow

  1. Jogador cria uma conta e recebe um identificador único que será usado para criar suas unidades;
  2. Escolhe o capítulo;
  3. Seleciona um dos mapas que está disponível;
  4. Seleciona em uma listagem as unidades disponíveis respeitando as restrições impostas pelo mapa, por exemplo, uma mapa pode determinar que podem ser escolhidos três unidades de defesa e uma unidade de extração;
  5. Inicia a simulação. O jogador visualiza as ações das unidades reagindo a invasão das ondas de zumbis. Ao término exibe o desempenho e quaisquer peças e itens que foram pegos. Estes elementos vão para o inventário e ficarão disponíveis para o jogador;
  6. Usando o editor e o compilador C++ de preferência do jogador, ele cria as unidades no formato de DLLs conforme uma especificação padrão (API). Itens e peças obtidas no jogo podem ser acessadas através de um banco de dados. As DLLs serão usadas para pegar as unidades dinamicamente dentro do jogo. Quando as unidades são programadas é necessário usar o identificador único do desenvolvedor.

Características Principais

  1. Ação do jogo 2D superior;
  2. Trilha sonora viking metal!
  3. Unidades de defesa programadas pelo jogador em C++ orientado a objetos;
  4. Melhoria das unidades usando itens e peças obtidas dos inimigos e do cenário;
  5. Expansível! Novos capítulos, novos itens, novas unidades, novos inimigos.

Gênero/Ambientação

Gênero: programming game tower defense

Ambientação: Terra pós-apocalíptica. Aldeias vikings, cidades destruídas.

Plataformas

Inicialmente Windows

Canais de distribuição: distribuição digital, possivelmente seria comercializado em site próprio.

Referências

  • Robocode
  • Robot Odyssey
  • RoboRally
  • ligth-Bot
  • CoreWars
  • Fault
  • Fallout
  • Rising Lands
  • Mad Max (filme)
  • Bathory, Týr, Amon Amarth, Turisas (música)

Definições de design no jogo de programação

Continuando o processo!

FASE 2 – Definições

Seguindo o método 3, amplio os critérios norteadores para contemplar as reflexões do post mortem de fevereiro. Incluo os aspectos das narrativas, de procurar trazer para o lado de um art game e o quanto se diferencia na forma de uma nova experiência digital interativa. Abaixo os critérios atualizados:

  • Level design
  • Balanceamento
  • Algoritmos complexos
  • Divertido em diferentes plataformas
  • Fôlego
  • Animação
  • Keep simple
  • Aspectos narrativos
  • Experiência digital interativa
  • Art game/news game

Considerando o impacto versus o esforço as quatro premissas iniciais são bastante complexas, mas a com maior esforço seria o tower defense com resolução de tasks e com uma coleção de itens e o impacto dessa ideia certamente não seria muito grande. O menor esforço seria fazer waves de inimigos e sem itens, a evolução baseada em XP.

Analisando Heart/Hand/Mind o escolha mais emocional é colecionar itens em um clima mais tenso das waves. Os itens são as premissas mais tangíveis (hand) e as premissas com puzzles envolve mais o aspecto mental.

Jogando tudo na matriz de posicionamento temos um empate! Entretanto o tema do jogo conduz para um conceito de coleta de itens. Então a premissa escolhida para ser trabalhada em março é um tower defense com elementos de roguelike (unidades com habilidades especiais, destruiu nunca mais, inventário, loot de itens), cuja evolução é dada por itens coletados dos inimigos ou minerados da fase.

Download Matriz de Posicionamento

FASE 3 – Geração de idéias

Continuo usando a ferramenta Game Genesis Virtual Deck de forma bem livre, bem inspiradora. Anotei alguns pontos para não perder de vista no design, principalmente o ponto mencionado pelo Klein – complexidade emergente (deixar as regras bem simples, mas a dinâmica delas acaba sendo complexa). Fiz o registro da ideia usando o Game Model Canvas. Dessa vez em termos de conceito fiquei sem dúvidas. O maior desafio está em elaborar este design. Mantendo a tradição, a redação do concept vou fazer em um post separado.

Download Game Model Canvas

Design do jogo de programação

Bem, concepção mais do que atrasada no mês de março! Agora sim saberei de verdade o que é um chaotic day. Vamos começar a estrutura a bagunça de ideias. O legal que nesse mês conto com a ajuda do Daniel Sallenave. Que a partir de uma pequena premissa enviou-me uma sinopse de uma história do game. Vai entrar no caldeirão também! Valeu Daniel!

FASE 1 – Buscar inspiração

A ida ao mundo foi motivada com ensino de Algoritmos e Programação em C++. Sempre desejei criar um game para ensinar programação em C++, que o aluno fizesse alguma entidade, compilasse, colocasse dentro do código e visse o resultado. Abaixo a lista de fragmentos:

  • Desejo cooperação, a maioria dos programming game envolve arenas, competição entre jogadores não penso em algo assim, não é pra ser duelo entre entidades;
  • Não pode ser um boring game pra ensinar programar. Diversão em primeiro lugar;
  • Tem que ter zumbis porque estou usando zumbis nos meus exemplos em sala de aula, tem que ter alguma coisa com zumbis. A inspiração vem do projeto Rails for Zombies;
  • O tema de março no #onegameamonth é roguelike! Yes! I love it! Janeiro já me atrevi andar por essas bandas e vamos voltar em março. É o melhor do hack n’ slash do RPG – níveis randômicos, morte permanente, loot de itens, movimento por turnos;
  • Impossível não pensar também nos MUDs (Multi User Dungeons), não penso em algo em rede, mas a idéia de quem sabe programar e reprogramar o mundo, NPCs, itens,…
  • Veja o post Jogos de Programação. Meu des taque é para o Robot Odyssey. Não gostaria de criar uma nova linguagem de programação, mas sim usar diretamente o C++ e nesse game o objetivo é resolver tasks.
  • Conversando com o Daniel Sallenave no Facebook enviei a seguinte premissa pra ele:  “o player é um sobrevivente, teria que construir seus robôs e programá-los para cumprir tarefas e uma cidade destruída pós um apocalipse zumbi. Inicialmente tinha pensado na coisa mais stealth”
  • Recebo de volta essa idéia básica para ser trabalhada durante o mês de março que adiciona o elemento tower defense: a humanidade sofreu um revés violento devido a uma mistura de guerra nuclear e apocalipse zumbi. Esse revés causou uma “volta” às raízes medievais e antigas do homem – daí, vikings – muito embora alguns poucos mantiveram pequenos bolsões de conhecimento, suficientes para resgatar a tecnologia anterior ao apocalipse. No processo, devido a alterações no ambiente (também decorrentes da guerra), alguns poucos descobriram a magia. O personagem principal é o líder de uma tribo de vikings itinerante que acha uma antiga fortaleza em bom estado de conservação. Mas a tribo está sendo caçada por um necromante que deseja o machado mágico do viking-líder. Juntando todo o seu conhecimento, os vikings mais inteligentes descobrem como reutilizar e remontar os dispositivos tecnológicos da fortaleza para melhor resistir aos ataques. Conforme o jogo vai avançando, os vikings descobrem novas e interessantes formas de utilizar esses artefatos tecnológicos, e até criar outros. Mas o inimigo também começa a se modernizar, e vai criando variantes de zumbis cada vez mais perigosos. Com o tempo, o necromante começa até a incorporar tecnologia nos zumbis que usa pra atacar a fortaleza.
  • E por último achei fascinante os trabalhos da artista plástica  japonesa Sayaka Ganz com material reciclado, ela cria esculturas fantásticas achei uma estética super bacana bem alinhada com este clima pós-apocalíptico. Abaixo coloco uma das obras da artista.
Sayaka Ganz - Walker
Sayaka Ganz – Walker

Sempre uso Heuristic Ideation Technique gosto de combinar elementos pra ver onde chego, combinações inusitadas. Roguelike puro e um programming game são tarefas punks gosto da sugestão do Daniel de colocar o elemento tower defense. Então parti inicialmente desse cruzamento – roguelike x programming game x tower defense. Cheguei em quatro possíveis cenários:

  • As unidades (torres) são programadas. Os times possuem até quatro unidades programáveis. Os níveis contem uma série de tarefas cujas unidades resolvem em turnos.  As unidade podem ser programadas onde se posicionar e seu comportamento visando resolver tarefas e enigmas. Conforme as tarefas são resolvidas itens são obtidos e colocados em um inventário. Estes itens podem ser usados para equipar as unidades e obter novas vantagens;
  • As unidades (torres) são programadas. Os times possuem até quatro unidades programáveis. Os níveis contem uma série de tarefas cujas unidades resolvem em turnos.  As unidade podem ser programadas onde se posicionar e seu comportamento visando resolver tarefas e enigmas. Conforme as tarefas são resolvidas são obtidos pontos de experiência (XP). Estes pontos são usados para comprar vantagens permanentes para as unidades;
  • As unidades (torres) são programadas. Os times possuem até quatro unidades programáveis. Os níveis contem ondas de inimigos.  As unidade podem ser programadas onde se posicionar e seu comportamento visando resolver como derrotar os inimigos. Conforme os inimigos das ondas são derrotados itens são obtidos e colocados em um inventário. Estes itens podem ser usados para equipar as unidades e obter novas vantagens;
  • As unidades (torres) são programadas. Os times possuem até quatro unidades programáveis. Os níveis contem ondas de inimigos.  As unidade podem ser programadas onde se posicionar e seu comportamento visando resolver como derrotar os inimigos. Conforme as ondas de inimigos são derrotadas são obtidos pontos de experiência (XP). Estes pontos são usados para comprar vantagens permanentes para as unidades;

O público agora é um pouco mais jovem, familiarizados com jogos, nunca programaram, de ambos os sexos de 16 a 19 anos. É capaz de dedicar até 1 hora de tempo diário para envolver-se com o jogo.

E por último eu sempre gosto de colocar um mood board pra dar um tom da ideia. O problema que já identifico que é uma parada cheia de traço realista, épica e tal. E dai meus amigos falta talento, sou obrigado a estilizar senão não tenho como dar conta do recado. Tem que ir pra algo mais pixel art, vetorial cartoon pra conseguir viabilizar.

Mood3

Quais as tuas sugestões para este conceito de jogo? O que você pensa a respeito?

Não deixem de seguir o blog ou curtir a página no Facebook.

Jogos de Programação

No final do mês de fevereiro durante as preparações das aulas de C++ estive fortemente motivado, pensando em criar um jogo para ensinar programação. Fala-se muito em gamification, mas para programação esta questão muito comportamentalista nunca me agradou muito. Programar é uma arte, requer criatividade, empenho na solução de problemas. Então comecei um processo de mineração na web por  jogos voltados para o ensino de programação. Achei muitos exemplos legais (bem antigos), alguns pelo jeito muito chatos e acabei sentindo vontade de prototipar algo para #onegameamonth do mês de março um roguelike misturado programming game  pra ensinar programação em C++ usando o próprio C++ (nada de ficar usando linguagem de scripts, sintaxe similar). O desafio é que esses jogos tem tudo para ser um boring game, muita gente (o mercado de massa) explícita que odiaria um jogo desse tipo. Mas onde existe um problema, existe uma demanda por uma solução criativa e inovadora.

Nos jogos de programação o jogador não controla diretamente seu avatar (robô, tanque, criatura, bactéria,…), mas programa o avatar utilizando em geral uma linguagem própria do jogo. Quando o jogo está executando o jogador não interfere mais na ação, simplesmente observa suas criações agindo.

O primeiro programming game criado foi o Darwin (1961) por Victor Vyssotsky. Os programadores competidores executam em uma memória (arena). Os vencedores são os melhores programas, que conseguem sobreviver.

Darwin
Darwin

O Core War foi criado em 1984. Utiliza uma linguagem própria chamada RedCode (semelhante ao Assembly) para criar programas que disputam na memória de um computador.

CoreWar
CoreWar

A grande maioria desses jogos são do tipo competitivos disputados em alguma arena, o jogador deverá programar sua criatura para enfrentar a criatura de outro adversário. Inclusive muitas destes domínios são usados para testar  algoritmos de Inteligência Artificial. Entretanto existem jogos cujo objetivo é completar uma tarefa, competir na forma de uma corrida ou programar sob uma arquitetura de Von Neumann. Meu foco em particular são os jogos que completam alguma tarefa, pois a priori não quero criar um jogo competitivo, acho mais importante as pessoas trocarem informações para trocarem informações, resolverem problemas de forma coletiva. Nesta categoria destacam-se o CeeBot, ColoBot e Robot Odyssey (1984). O último é um adventure que o jogador deve programar quatro robôs (com portas lógicas e flip-flops) para sair dos subterrâneos da cidade.

Robot Odyssey - Main Screen
Robot Odyssey – Main Screen
Robot Odyssey - Gameplay com os robôs
Robot Odyssey – Gameplay com os robôs

Outros que gostaria de destacar é o projeto que está na Greenligth, o Fault. Usa uma temática hacker e é baseado no Core Wars. É todo modo texto e por conta disso sofreu fortes críticas da comunidade de jogadores da Steam. Pela reação, tais jogos ficaram totalmente retrô lá nos anos 70-80. E o ligth- Bot um jogo free disponível no Kongregate o objetivo é programar um robô que deve acender uma luz em determinados pontos.

ligth-Bot
ligth-Bot

E o mais legal que existem programming games no formato boardgame. O que eu achei mais interessante é o RoboRally. Pasmem, criado por ninguém menos que Richard Garfield! Sim, esse mesmo! O criador de Magic: The Gathering. O objetivo é disputar uma corrida entre robôs que são programáveis através de cartas de comandos.

RoboRally
RoboRally

Também tem o c-Jump Computer Programming Board Game. Usando comandos básicos de programação os jogadores participam de uma competição de esquiagem. Parece ser mais simples que RoboRally.

c-Jump
c-Jump

Será que fica mais fácil aprender a programação? Como eliminar esse fator “educativo”, boring que esses jogos podem carregar? De que forma torná-los mais lúdicos?

Bem vamos ver o que mês de março nos espera e começar a projetar um novo programming game. É certo que um grande problema existe – aprender a programar, principalmente em C/C++. No mundo inteiro necessita-se de programadores e a evasão nos cursos superiores de programação é grande.  Aprender em uma plataforma divertida, motivadora é interessantíssimo. A questão toda é – não matar o fator “for fun” essencial do jogo.

Avante!

Veja mais em:

Programming Game Wiki

Retro Programming

Programming Game Wikipedia