rockbot

Progress Report

Starting the new year with lots of coding and new stuff in Rockbot. Check out in the following video!

Editor Progress Report

Where do we stand?

Hello all, sorry for the lack of news lately.

People following the project are probally asking, what is happening, is it still alive? The answer for the second question is yes, and for the first one, a long one.

First of all, I need to tell how the porting to C++ is going. Most of the basic engine code (colision, players, npcs, sound, graphics) is already ported and working, but as this code is the oldest one, there are lots of room for improvement, even the already ported code have parts that will need to be rewritten in the future, as the code is ugly, full of hacks and hardcoded parts. It is important to remember that the project was started with a much smaller scope than the current one, so, having a code that was well written for future support was not an important matter – sorry for that. So, because of that, some parts as jump and gravity – that now uses acceleration and speed meaning a much better behavior – were completely redone, and with that, a lot of old and new bugs appeared.

This moves us to where we are now. I am dividing my time between fixing bugs and porting code such as the weapons menu, that by being much newer, are better modularized, and can be ported without any drastic chances, and much faster. I have no idea when the porting will be completed to get the same level of maturity and functionality from version 0.1 RC1, but I hope to create a beta release by the end of this month (november/2011).

Talking about released, another improvement we want, and need to make, is how we build the project for different platforms. Sadly, out prefered development IDE (Qt Creator) still have a very limited support for multiple toolkits, so we are probably going to use Code Blocks IDE for that. This is a must, as compiling in C++ uses much more objects and a single script or makefile is not enough in most cases.

Engine Status

[lang_pt-br]Pequena amostra do estado atual do motor de jogo, escrito em C++, para o Rockbot:


Eu diria que o port está em torno de 40%, mas deve progredir bastante em breve, pois grande parte da lógica e rotinas mais complexas já foi portada.[/lang_pt-br]

[lang_en]Small sample of the current state of the game engine, written in C++, for Rockbot:


I would say that the port is done around 40%, but should progress fast from now on, sinse great part of the most complex logic and methods was already ported.[/lang_en]

C++ is fun, but sometimes, is not

As vezes o C++ cria alguns problemas chatos. A idéia de uma linguagem com orientação a objetos é que cade peçado (classe/objeto) é uma entidade independente, mas que pode conter outras entidades. O problema começa quando você tem dois tipos de entidades diferentes, como NPCs e Players,q eu tem que fazer cálculos levando em conta a outra entidade, que ela no conhece. No caso do Rockbot, a classe game, possui duas listas, uma de players e outra de npcs, e cada uma destas, contém uma lista de projéteis, o problema é que cada elemento da lista precisa acessar a lista do outro tipo de elemento, para fazer verificações de colisão e proximidade. Vou ter que pensar muito bem em uma solução.

 

Press Start to Continue…

[lang_pt-br]Ei camaradas, quanto tempo heim?

Sinto muito por ficar tanto tempo sem dar notícias, mas eu estava passando pelo processo de comprar um apartamento e me mudar para ele, então desde novembro as coisas estavam um pouco complicadas, e quando chegou abril, foi uma loucura com mudança super-rápida, mandar consertar alguns problemas no lugar e, além disso, o trabalho está bem puxado, já que comecei a atudar em uma nova parte que me consome um bocado do cérebro e é bem cansativa. Resumindo, agora estou vivendo no meu próprio apartamento, já pude começar a relaxar um pouco, e estou tentando retomar o trabalho no Rockbot onde o deixei. O port do código para C++ está indo bem apesar de trabalhoso; a nova versão está bem rápida e o código faz muito mais sentido, o que tornará muito mais fácil programar em cima dele, quando o port estiver finalizado. Espero poder lançar uma versão nova mẽs que vem, mas tenham em mente que, como é uma reescrita total do código, muitas funcionalidades presentes hoje não estarão mais lá por uns tempos.

Nos vemos em breve![/lang_pt-br]

[lang_en]Hey folks, long time no see!

Sorry for the recent lack of new, but I was in the process of buying an apartment for myself and move to it, so since november things were a bit complicated, and when april arrived, all went crazy with fast moving to the new place, fixing several problems on it, and also, work was a bit tiring as I am in a kind of a new position that demands much brain effort. Long history short, now I’m living on my owned place, have started to relax a bit, and am trying to resume the work on Rockbot were it was left. The C++ port is doing well even if it is a lot of work; it is very fast so far, and as the code is much more logic, it will be simpler to program for, once the porting is finished. I hope to release some new version next month, but keep in mind that it is a complete new code, so a lot of fatures from the old one are still being reimplemented, and will be missing for a while.

See you guys soon![/lang_en]

Complete Rewrite

[lang_pt-br]Aproveitando a oportunidade oferecida pela reescrita do formato de arquivos, vamos reescrever o Rockbot praticamente do zero em C++. A decisão já vinha sendo amadurecida faz tempo e basicamente se deve a:

  • confusão de manter um código organizado em ANSI C
  • bom suporte de compiladores C++ para as plataformas que queremos portar o jogo
  • simplicidade da programação graças a herança, hash tables e vectors

Vai levar um tempo para tudo ficar pronto novamente, mas temos certeza que isso irá acelerar o desenvolvimento enormemente daqui para a frente.[/lang_pt-br]

 

[lang_en]Taking the opportunity given by the file-format chances, we are starting the complete rewrite of Rockbot in C++. This decision was being matured a long time ago, and basically, is because:

  • confusion in keeping a ANSWI C code organized
  • good support for C++ in our chosen platforms to port
  • coding simplicity thanks to heritage, hash tables and vectors

It will take a time to adapt all again, but we are sure that this will lead to much faster development from now on.[/lang_en]

Twitter

[lang_pt-br]Já que o trabalho agora é de longo prazo, para implementarmos muita coisa no editor, vamos postar poucas novidades aqui no blog do jogo, mas fiquem de olho no nosso twitter (@RockbotGame), que está visível na direita do site, para atualizações constantes.[/lang_pt-br]

[lang_en]Once our work now is for long, to implement a lot of stuff in the editor, we will post fwe news here in the game site blog, but stay tunned in our twitter (@RockbotGame), que is visible in the site’s right side, for often updates.[/lang_en]

Backend

[lang_pt-br]Após um curto período de descanso e férias, o trabalho no Rockbot está andando. Estamos trabalhando mais na estrutura das coisas, por isso não existe nada novo para mostrar, pelo contrário, o número de bugs foi às alturas. Essa situação deve perdurar por mais uns 2 meses e, ao fim deles, teremos toda a estrutura para finalizar os últimos ajustes e lançar a versão final.

Neste meio tempo, a arte está sendo bastante melhorada, e planejamos começar a trabalhar em versões para Dreamcast e Android, também ajustando a imagem para ser centralizadas em dispositivos cuja resolução é maior que a padrão, mas não o suficiente para uma escala em 2x.[/lang_pt-br]

[lang_en]After a short period of rest and vacations, work on Rockbot is being resumed. We are working more in the structure and backend, so there is nothing new to show up, but the bug number have gone sky rocket. This situation should last a pair of months, but after that, we’ll have all the structure needed to finish last adjustments and release the final version.

Meanwhile, the artwork is being greatly improved, and we plan to start working on Dreamcast and Android ports, also adjusting image for centering image on resolutions that are bigger than default, but not high enought for scale 2x.[/lang_en]

Goodbye Nintendo DS, and also 0.1

[lang_pt-br]Nós decidimos mudar um pouco o nosso planejamento. Conforme fomos implementando funções que supostamente deveriam entrar apenas em versões futuras, e o motor do jogo amadureceu, ao invés de continuar fazendo uma série de versões zero-ponto (0.X), nossa próxima versão será a 1.0, focada na reestrutuação da arquitetura de arquivos, de forma a termos muito menos coisas hardcoded, mas não como inicialmente previsto. Resumindo, algumas coisas que pensamos em fazer ajustáveis manualmente, como definir a posição X e Y inicial para cada sprite de um NPC, não irá mais acontecer, já que adiciona muita complexidade mas tem poucas vantagens para um usuário ou editor. O que irá sim ser feito, como já foi feito para os objetos, é uma melhor separação entre elementos do mapa, ou seja, ao invés de fazer parte do arquivo de mapa, a lista de objetos é guardada em um arquivo separado, como se fosse uma tabela relacional de SQL. Isso irá permitir modificações no formato de arquivo sem haver necessidade de se reconstruir o mapa inteiro, fazendo com que seja mais rápido implementar melhorias no editor e jogo.

Por fim, temos novos requisitos mínimos para hardware:

  • tela de 320×200
  • 16 MB de RAM
  • CPU deve ser veloz o suficiente para rodar o jogo a 30 FPS

Isso fará com que a versão para Nintendo DS seja definitivamente excluída. Infelizmente o hardware, e principalmente o SDK, do DS são muito fracos para suportar um jogo multi-plataforma com SDL. Uma versão nativa ainda será possível, mas não estará em nosso radar a menos que alguma outra pessoa decida fazê-la. Para pessoas donas de um DS, recomendo comprarem um Dingoo A320 ou GA330, ou esperem por uma versão decente da SDL para DSi ou 3DS.[/lang_pt-br]

[lang_en]We decided to change our plans a little bit. As we started implementing things that were suposed to get only on later versions, and the game engine matured really well, instead of doing a series of zero-dot (0.X) versions, the next one will be focused in refactoring file-architeture in order to have much less hardcoded stuff, but not as much as initially planned. In short, some stuff we tought like manually adjusting initial X and Y for each NPC sprite, will not happen, as it adds too much complexity and have little advantages to the player/editor. What will make is a better separation of elements, like was already done for object list, meaning, instead of a map object list being part of the map file, a separated file will contain it, being a little more like a SQL database with relations. This will allow us to change file-format without having to redraw the entire map, meaning faster improvements in editor and game.

Finally, we set a new standard for minimal hardware requirements:

  • 320×200 display
  • 16 MB RAM
  • CPU must be fast enought to run game at 30 FPS

This means, the Nintendo DS port is now out. Sadly the hardware and most important, the SDK, is too weak to support a multi-platform game written in SDL. A native port is possible, but it will not be on our radar if someone else does not take over it, we will focus on pure SDL coding. For people that have a DS, I recomend to buy a Dingoo A320 or GA330, or hope for a decent SDL port/SDK for DSi/3DS.

[/lang_en]