iuri

This user hasn't shared any biographical information

Homepage: http://rockbot.upperland.net/


Posts by iuri

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…

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!

Complete Rewrite

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.

 

Twitter

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.

Backend

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.

Goodbye Nintendo DS, and also 0.1

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.

0.1 Release Candidate 1 Released (Rock&Roll)

Depois de mais de dois meses, trazemos finalmente uma versão nova.

Entre em nossa seção de downloads para pegar binários para Linux, Ubuntu 10.04, Windows, Playstation 2 e Dingoo (Dingux).

A lista de modificações em relação ao beta7 é:

  • corrigir problema de botões no menu (corrigir esquema de read_input e game_mode)
  • array de teclas deve ser INT e não CHAR
  • estrelas maiores devem ser cinza
  • melhorar “pisca” do player quando invulnerável (está muito rápido)
  • inimigos tem que ter um hit-timer para ficarem invencíveis por um segundo, como os players
  • direcionar debug para arquivo stdout.txt
  • spiked chain não deve ser destruída no hit
  • chefes tem que ter um hit-timer para ficarem invencíveis por um segundo, como os players
  • EDITOR: implementar fator de zoom
  • direcionar debug para arquivo stdout.txt
  • ajustar sensibilidade do análogo para PS2 e PC independentemente
  • implementar direcional digital no PS2
  • corrigir problema em que player muda tipo de animação no meio do pulo
  • refinar velocidade e gravidade do pulo
  • corrigir problema em “got weapon” onde não anda para o meio se passou dele
  • teleporte voltado para esquerda não está aparecendo
  • corrigir problema de pulo+espinhos depois de barreira
  • descobrir porque player fica invulnerável após morte (hit == 1?)
  • melhorar dano de espinhos
  • plataformas que se movimentam “derrubam” jogador para dentro das paredes
  • itens colocados via editor não estão funcionando corretamente
  • pílula só deve ser barulho se HP OK – pular sobre escadas ainda está dando problema
  • corrigir pequena discrepância na posição vertical da tela (área cinza)
  • implementar morte para 2 jogadores (player reaparece na mesma tela, junto do player que está vivo – não pode ter 2 mortos simultâneos)
  • (URGENT) corrigir scroll para 2 player mode
  • (SERIOUS) em 2 player mode, ESC não sai do jogo (PC)
  • criar flag LINUX, WIN32 e colocar PC (Linux e Windows) no projeto – ajuda com alguns ifdefs
  • tecla de quit deve funcionar apenas em PC e Dingux
  • (URGENT) objetos só testam player 1
  • (SERIOUS) na água, se esbarra em uma parede, volta a gravidade normal (devemos testar meio do player/terrain apenas)
  • menu deve ser chamado indepententemente para betabot e rockbot
  • (FEATURE) betabot must shot two projectiles at once
  • colorcycle deve ser aplicado também sobre nível 3 de tiles
  • implementar sistema de checkpoints (no loadMap, se a posição do mapa for < RES_W, é checkpoint) – na versão 0.2 isso será uma lista em stage
  • congelamento de tempo só pode parar um único chefe (magebot)
  • animação de hit deve seguir o player/npc
  • animações de hit devem sumir quando o player morrer ou trocar de tela OK – new gravity system more similar to megaman games
  • (SERIOUS) quando atingido, se está segurando o botão de pulo, está pulando automaticamente
  • add a animation state for transition between stand and moving called OK – add a “scroll lock” terrain type, similar to boss door, but without doors animation/sound
  • (URGENT) blocks are falling
  • to not block top and botton in colision. if player leaves by bottom, dies (holes).
  • fix door/scroll-lock right to left (infinite loop) OK – show 3rd level on “ready”
  • dying makes the music reset to apebot’s OK – (SERIOUS) stage intro dialog is showing again when player dies
  • must show player and NPC on boss dialog OK – (SERIOUS) moving left/right platform not working
  • (URGENT) crashing when loading a stage after beating a boss OK – teleporter is returning to the first used one always
  • implement teleporters return (for 8 bosses room in skull castle) OK – (URGENT) create a new type of terrain that is meant to be checkpoint
  • (URGENT): npc grtempaphics are using filename as key. this is wrong, as we can have different NPCs with same graphic file, must use name instead.
  • (URGENT) when beating a boss and dying, is returning to previous stage (must set checkpoint to new stage)
  • (see checkpoint terrain) – boss door 1 must save checkpoint – novos npcs: c) DONE – morcegos d) DONE – shooters de teto (atira uma na diagonal, uma reto) e) shooters laterais
  • allow user to define NPC direction in editor
  • different damages according to weapon type for bosses OK – (SERIOUS) ready is showing in the top-left after first blink in Dingux, similar problem for Destrin ship
  • (URGENT) fix jump on stairs
  • (URGENT) items placed with editor are not being shown in game (do not allow dot in the name)
  • (URGENT) player is heatting the head too soon
  • colorcycle is not working well in intro (have to add one extra colorcycle in the start with a very small timer)
  • user key reading in intro is too slow, so keypresses are being lost (had a bug with new/load screen not showing)
  • (SERIOUS) item colision check is bad (falling from jump item if a bit to the left) (removed reducer)
  • (URGENT) intro and dialogs are out of place (showing dynamite in spike)
  • only show weapons adquired
  • jump should not pass the screen maximun (y + ph > 4), but must keep the gravity calc
  • add jet and coil “you got”
  • TEST – jump is slow in Dingux: need to refactory in order to move the same amount (x axis), but faster (more yinc)
  • (URGENT) with the new jump gravity system, player if “kicking” in the water
  • fix star speed by using sdl_surfaces for stars/bg instead of fill_rect
  • (SERIOUS) check weapon damage in bosses, seems like it is not working
  • moving cursor in weapons menu should move only to the first available weapon, not empty positions
  • fix got weapon sound effect repeating
  • need small music for castle intro
  • check and improve color-cycling in the game intro (is failing in the dingux)
  • adjust timings in intro
  • IA para Apebot
  • ending (rockbot or betabot over train)
  • show boss energy
  • player2 energy must be placed under p1
  • thinner energy bars
  • (URGENT) [PS2] intro feeezes (probally due to colorcycle)
  • INITIAL_HP must be used in NPCs only for bosses
  • [PS2] the “you got” second line is showing trash
  • (URGENT) [PS2] teleporters are sending player to the wrong place
  • [PS2] trash appearing in credits
  • (URGENT/RE-TEST) [PS2] corrigir problema de botoes do player2 no PS2

A versão para Nintendo DS continua ausente, e deve ser o foco do RC2.

Esperamos que vocês gostem, e se acharem algum problema, nos informem.

Bugfixing

O período de correção de bugs está indo bem, e eu gostaria de aproveitar a chance e explicar o porque da ausência da versão de Nintendo DS. ocorre que, durante o desenvolvimento do beta7, expandimos o tamanho da imagem png do tileset para caber as imagens das novas fases. Descobrimos, infelizmente, que o DS não consegue carregar um arquivo tão largo (não tem a ver com memória e sim tamanho em pixels). A solução é encolhermos o arquivo e refazermos algumas fases, ou separar, no DS, o tileset em dois arquivos. Infelizmente o DS é uma máquina muito ruim de se programar para, e por isso a solução deve ainda demorar um pouco.

Beta 42, I mean… 7, released!

Para os nerds de plantão, e também para acompanhar o lançamento de um novo Ubuntu Linux, resolvemos homenagear o dia 42 (101010 em binário, para quem não entendeu, procure ler ou assistir o Guia do Mochileiro das Galáxias) com o lançamento de nosso último beta do Rockbot 0.1! Daqui em diante, apenas teremos correção de bugs ou pequenas melhorias, até o fim do ano, e a versão 0.1 deve ser realmente boa, já que estamos bastante contentes com o lançamento de hoje.

Entre em nossa seção de downloads para pegar binários para Linux, Ubuntu 10.04, Windows, Playstation 2 e Dingoo (Dingux).

A lista de modificações em relação ao beta6 é realmente grande, mas as principais mudanças são:

  • Oito estágios e um chefe final completamente jogáveis (se você não esbarrar em algum bug).
  • Música para todas as fases e chefes.
  • Mais efeitos de som, como na rebatida de tiros.
  • More do jogador – ainda acontece de você ficar invunerável após morrer, mas isso será removido na próxima versão, é para facilitar os testes.
  • Sprites para todos os chefes.
  • Melhor inteligência artificial para inimigos e chefes.
  • Armas de todos os chefes – para fins de teste, você pode usá-las mesmo antes de derrotar os chefes.
  • Janela de jogo escalada em Windows e Linux, já que 320×200 é muito pequeno para um monitor de computador.
  • Melhor menu – aperte o botão de ataque para sair de um menu.
  • Terreno tipo água de melhor sistema de colisão.
  • Versão para Dingoo (Dingux)

A versão para Nintendo DS está ausente até arrumarmos alguns problemas relativos a som e música nesta plataforma, mas temos uma nova versão para Dingoo rodando Dingux.

Esperamos que vocês gostem, e se acharem algum problema, nos informem. E não esqueçam sua toalha!

Not so fast Cowboy!

Bom, parece que as coisas não são tão fáceis quanto se esperava. Encontramos um bug realmente estranho, emq ue uma parte, apenas uma pequena parte, do arquivo de mapa não funciona direito no PS2. O estranho é que não tem absolutamente nada de anormal nesta estrutura de dados que poderia dar problemas no Playstation.

A solução vai ser fazer uma bela reengenharia nesta parte, que é a de objetos, para guardar estes dados em um arquivo a parte, só que isso vai levar um bom tempo… 🙁