Publicado por Dalto Curvelano em 11 de May de 2009
Wolfenstein 3D Refeito em Ruby
Na RailsConf 2009 (de onde um resumo está pra chegar no Ruby Inside Brasil), Hongli Lai e Ninh Bui da Phusion (os caras por trás do Passenger) deram uma apresentação chamada Escalando Rails. Como uma parte da apresentação, eles quiseram demonstrar que o Ruby é poderoso o suficiente pra rodar um jogo 3D em uma velocidade decente, então eles criaram Rubystein, um clone de Wolfenstein 3D em Ruby, usando a biblioteca para jogos Gosu.
O Rubystein não é um verdadeiro clone no sentido de que ele é exatamente igual ao Wolfenstein 3D, mas os princípios são os mesmos. Ele é foi feito sob medida para a apresentação de Ninh e Hongli's, e conta com "a pack of Mongrels", vários Rubistas e Zed Shaw como um dos chefões.
O trabalho em si só é impressionante. Eu nunca vi um jogo 3D tão enxuto desenvolvido em Ruby antes. No nosso netbook, rodando Ruby 1.8.6 ele roda lentamente, mas sobre o Ruby Enterprise Edition o jogo roda rápido o suficiente. Entretanto, para minha surpresa ele também roda perfeitamente sobre o Ruby 1.9 e sua performance voa.
Hongli e Ninh são rápidos em adiantar que o Rubystein é um trabalho muito, muito rústico. O projeto não tem uma estrutura de diretórios e é apenas um amontoado de arquivos. A aplicação em si é razoavelmente bem estruturada, e existem muitas oportunidades para usar o código-fonte para construir suas próprias variações do jogo. Nenhuma instrução é disponibilizada, então isso não é para os tímidos. Experimente o Rubystein como está, apenas clone o repositório do git localizado em git://github.com/FooBarWidget/rubystein.git e então execute o arquivo wolf3d.rb.
Observação: Se você não tem a fonte Myriad Pro instalada, o jogo vai fechar quando você chegar em um chefaõ. Ou instale a Myriad Pro ou troque o nome da fonte usada por algo mais genérico no arquivo wolf3d.rb.

Clique aqui para adicionar ao del.icio.us


11 de May de 2009 às 16:47
Que tem capacidade para rodar o jogo nunca duvidei, o problema mesmo é a performance. Wolf ja fez 17 anos, e rodava em maquinas muito, mas muito inferiores ao netbooks.
A renderizacao do wolf 3d é extramente simples, nao vi os detalhes do projeto, mas pelo que vi usam uma lib que suporta renderização 3d (o que o original nao possuia), entao esse é mais um fato contra essa implementacao, se nao usam a aceleracao, menos mal, mesmo assim nao deveria ser lento.
Um teste interessante seria pegar o jogo original (ou o demo) e rodar no netbook usando o dosbox, por se tratar de um emulador de dos seria uma comparacao um pouco mais justa com o ruby que é uma linguagem interpretada.
21 de May de 2009 às 20:04
[...] - Um clone de Wolfenstein 3D em Ruby: Já escrevemos um artigo sobre Rubystein aqui no Ruby Inside, mas você também pode ver um vídeo da Rails Envy sobre ele. com o seu [...]
31 de May de 2009 às 12:11
Ele é um jogo muito simples, mas é extramamente pesado para rodar. Tentei rodar com Ruby 1.8 e sem chance. Tentei também com o Ruby Enterprise Edition.
Ruby é uma linguagem muito bacana, só que também muito pesada. A performace não é um dos pontos fortes da linguagem.
08 de August de 2009 às 21:34
[...] pouco tempo o Wolfenstein 3D foi reescrito em Ruby e agora temos... Pong! Veja um vídeo de uma partida, baixe o código-fonte do GitHub, e leia um [...]