iuri

This user hasn't shared any biographical information

Homepage: https://rockbot.upperland.net/


Posts by iuri

Beta 4 kickoff

[lang_en]

In this last weekend, work on beta 4 has been started with great success. The new colision detector and movement handler are almost completed, and work much better than in beta3, and the code is cleaner and better too, I dare to say that there is only one bug that is very hard to reproduce.

Also, we started testing sound, it works pertectly in Linux, but will need some work on Playstation 2 because our current implementation of key/joystick reading (we are not using threads at this point of development) makes the music glitch, probally we need something to read input less often or put it on a thread.

Another thing was that we finally fixed a but that made the game goes freeze. It was just that using short int for a timer is not a great idea, and after passing the 32k, the number goes negative and our timer testing, just were not released.

So, here is the list of planned features for beta 4:

  • Fix beta 3 bugs:
  • a) projectiles are clearning the screen in the wrong position (above) – DONE
  • b) sometimes the game freezes (animation still run, but player do not move) – DONE (CheckDelay)
  • c) colision detection have a bug that allows player to “walk in the air” (1) – DONE
  • d) player can fall to the left side of screen (1) – DONE
  • (1)revise whole collision detection – INWORK
  • try to hack SDL to disable bilinear filter (not possible currently) – CANCELLED
  • fix SDL_Timer (see http://forums.ps2dev.org/viewtopic.php?t=2842&highlight=clock+tick) – DONE
  • (2)fix SDL_mixer (see http://forums.ps2dev.org/viewtopic.php?t=9798&highlight=sdlmixer)
  • commit SDL changes to ps2dev.org
  • music (2) – DONE
  • sound effects (2)
  • editor: allow user to set p1 and p2 starting position (must be in same screen area – MAX_W and MAX_H of distance)
  • editor: allow user to add boss door
  • editor: add npc support (including a wizard to define it’s frames)
  • editor: add line tool
  • editor: add stairs (use locked 2)
  • editor: allow second level of tiles (this will allow user to create transparent tiles, for stairs, etc)
  • better “loading”: make it generic and allows two types:
  • a) scroll messages up when new one reaches bottom of screen (for debug)
  • b) loading with a progress bar and showing only the last message)
  • add loading for all elements, including intro screen and such
  • load NPCs from the game/map file
  • NPC movement types (wait, attack, loop, left to right and right to left)
  • NPC can only execute acions that are defined in the frameset list (if do not have jump frame, can’t jump)
  • NPC must return when killed and out of players vision
  • create transitions between two differente stages (like a boss door, or a staircase)
  • if the whole screen height have a wall (locked) ahead, do not scroll beyond it, hidding the contents after it (this will allow us to use more regions in the map)
  • make win32 version run from anywhere
  • must find a way to determine the jump size by the time of button pressed
  • create a new animation system, that have individual frames with duration [add_frame(posx, duration)]
  • redesign whole game intro (use in-game like graphics)
  • create graphics of players in several angles to improve graphics ideas
  • add some animation using color cycle in intro by switching palettes
  • working staircases
  • indicate when a player is blocking the scrolling (using a P1/P2 above it’s head)
  • add boss (Apebot)
  • make the screen rendering in real time, use a small part out of the screen to render when necessary instead of rendering the whole thing at onde
  • (create function render line and render column) – memory should go from 226x63x256=3.600kB to 22x15x256 = 84kB (main app still uses ~1.5MB)
  • compile the game for Nintendo DS (no real build yet, just start testing)

[/lang_en]

[lang_pt-br]

No último fim de semana, o trabalho na versão beta 4 começou com grande sucesso. O noivo sistema de colisão e gerenciador de movimentos estão quase completos, e funcionam muito melhor do que no beta 3, além do código ser mais limpo e melhor. Eu ouso dizer que existe apenas um pequeno bug, bem difícil de reproduzir.

Também começamos a testar o som, ele funciona perfeitamente em Linux, mas vai precisar de algum esforço para o Playstation 2, porque nossa implementação atual de leitura de teclado e joystick faz a música ficar cortada, provavelmente vamos precisar ler menos frequentemente o dispositivo de entrada ou colocar a leitura em uma thread (não estamos as usando neste momento do desenvolvimento).

Outra coisa que fizemos foi corrigir um bug que fazia o jogo congelar. A causa foi que, usar uma variável do tipo short int para tempo não é uma grande idéia, já que ao passar de 32 mil,  a variável fica negativa, e o nosso contador de tmepo ficava simplesmente preso.

Então, para finalizar, aqui está a lista de tarefas para o beta 4:

  • Corrigir bugs do beta 3:
  • a) projéteis estão limpando a tela na posição errada (acima) – FEITO
  • b) algumas vezes o jogo trava (a animação continua, mas o jogador não se move) – FEITO (CheckDelay)
  • c) a verificaçãod e colisão tem um bug que permite andar no ar  (1) – FEITO
  • d) o jogador pode cair para o lado esquerdo da tela (1) – FEITO
  • (1) revisar toda a verificação de colisão – INWORK
  • tentar desabilitar o filtro biliniear na SDL (não é possível atualmente) – CANCELADO
  • corrigir a SDL_Timer (see http://forums.ps2dev.org/viewtopic.php?t=2842&highlight=clock+tick) – FEITO
  • (2) corrigir a SDL_mixer (see http://forums.ps2dev.org/viewtopic.php?t=9798&highlight=sdlmixer)
  • enviar modificações na SDL para o ps2dev.org
  • música (2) – FEITO
  • efeitos sonoros (2)
  • editor: allow user to set p1 and p2 starting position (must be in same screen area – MAX_W and MAX_H of distance)
  • editor: allow user to add boss door
  • editor: add npc support (including a wizard to define it’s frames)
  • editor: add line tool
  • editor: add stairs (use locked 2)
  • editor: allow second level of tiles (this will allow user to create transparent tiles, for stairs, etc)
  • better “loading”: make it generic and allows two types:
  • a) scroll messages up when new one reaches bottom of screen (for debug)
  • b) loading with a progress bar and showing only the last message)
  • add loading for all elements, including intro screen and such
  • load NPCs from the game/map file
  • NPC movement types (wait, attack, loop, left to right and right to left)
  • NPC can only execute acions that are defined in the frameset list (if do not have jump frame, can’t jump)
  • NPC must return when killed and out of players vision
  • create transitions between two differente stages (like a boss door, or a staircase)
  • if the whole screen height have a wall (locked) ahead, do not scroll beyond it, hidding the contents after it (this will allow us to use more regions in the map)
  • make win32 version run from anywhere
  • must find a way to determine the jump size by the time of button pressed
  • create a new animation system, that have individual frames with duration [add_frame(posx, duration)]
  • redesign whole game intro (use in-game like graphics)
  • create graphics of players in several angles to improve graphics ideas
  • add some animation using color cycle in intro by switching palettes
  • working staircases
  • indicate when a player is blocking the scrolling (using a P1/P2 above it’s head)
  • add boss (Apebot)
  • make the screen rendering in real time, use a small part out of the screen to render when necessary instead of rendering the whole thing at onde
  • (create function render line and render column) – memory should go from 226x63x256=3.600kB to 22x15x256 = 84kB (main app still uses ~1.5MB)
  • compile the game for Nintendo DS (no real build yet, just start testing)

[/lang_pt-br]

    Steady Progress

    Work is being done nicely, and beta 3 promisses to be a really good one. See this small preview:

    Here is the list of features, and it’s status, that will be in the next beta, targeted to the end of this month:

    DONE – one/two player mode
    a) remove player 2 from move/clear/show functions
    b) scroll with only one player
    c) select one or two players
    d) on PC, P1 can use both joy1 and keyboard
    DONE – allow multiple instances of a same NPC (to reuser the same graphics in a different position)
    DONE – adjust players initial position
    DONE – add players HP bars
    DONE – fix collision verification when falling from a jump and moving left/right (still needs more work)
    DONE – make NPC shield itself (shiled flag, plus frame zero in animation)
    DONE – player hit animation
    DONE – add collision verify into player hit animation to not move where it can’t
    DONE – NPC hit animation
    DONE – player hit animation
    DONE – make players loose 3 hit points when touching a NPC
    DONE – fix jump+shoot and walk+shoot animation
    DONE – player teleport animation in stage start
    DONE – “ready” text animation on stage start
    DONE – align hit animation centered vertically and horizontally to the player or npc
    DONE – editor: add fill tool (still needs work for non-continual areas like a square)
    NOT – separate hit into NPC check into a separate function and call it even if player is stopped
    DONE – make NPC shoot
    DONE – NPC shoot must diminish 1 HP from players when hit them
    – fix small underscreen bug on top of the screen
    – show projectile more near to the hit target (is vanishing too soon)
    – NPC killed animation
    – create a complete map (without boss)
    – add a small text in the stage ending (beta and credits)
    – create deb package for Ubuntu/Linux
    – map PS2 joystick buttons correctly
    – fix timing for PS2
    – initialize units for PS2 according to need (use argc to find run path)
    – create an official PS2 build

    Beta 2 released

    This is a big day for the Rockbot project as marks the first release that already have a good foundation and a plan for features. Go grab the beta 2 build for Windows in our project page.

    Some of the new features added in this beta are:
    • revised and incrementd NES palette to use current black colors
    • added ESC key to leave game in intros too
    • fixed the screen’s left side extra one pixel
    • fixed NPC sprite background overlapping PCs
    • changed NPC graphic
    • fixed bug that players are one pixel above ground
    • fixed scrolling to make floor always visible
    • vertical scrolling together with horizontal not working
    • a dead NPC is still blocking the shoots
    Linux still do not have a build, but we plan to create deb packages for Ubuntu (always the lastest version, currently 9.10) and a Playstation 2 build starting from the next beta.

    We have a plan! (besides take over the world)

    We are deciding a list of features each beta will need to acomplish.

    This is great, because it is cleaner to see and think what needs to be done, in an incremental way, instead of the old and plain TODO list.
    Here is what is planned to beta2 (and much more that was implemented before the creation of the plan), due to come out in the next weeks:
    • revise and increment NES pallete to use current black colors (add a strong yellow for Betabot)
    • add ESC key to leave game in intros too
    • fix the screen’s left side extra one pixel
    • fix NPC sprite background overlapping PCs
    • change NPC graphic
    • fix bug that players are one pixel above ground
    You can check the up to date document here: sourceforge svn for RoadMap

    Intro Screen

    It is still a bit sharpen, but it is great to have at last one decent intro screen 🙂

    Development is not dead [O desenvolvimento não morreu]

    Things are moving a bit slow in development, result of new year holydays, but little by little it are being resumed. Meanwhile we had the following improvements:
    • started the changes in Rockbot graphics; he now have larger arms and feets with a thinner face. steel remembers Rockman/Megaman, but is not a simple ripoff anymore
    • corrected again the bug that made shots not disapearing in left side
    • created a small stage with simple graphics for testing
    • created a test NPC
    • created structs to contain data about players and NPCs, like hit points and name
    • created graphic of one more boss: Daisybot, a girl who shots flowers
    ————————————————————————————————-

    As coisas andam um pouco devagar no desenvolvimento, resultado das festas de ano novo, mas ao pouco vão sendo retomadas. Enquanto isso tivemos as seguintes melhorias:

    • início da alteração no gráfico do Rockbot: ele agora tem os braços e pernas mais grossos e rosto mais fino; ainda lembra o Rockman/Megaman, mas não é mais uma simples cópia.
    • corrigido novamente o problema com os tiros não desaparecendo na esquerda
    • criada uma pequena fase com gráficos simples para testes
    • criado NPC para teste
    • criadas estruturas para conter informações como nome e pontos de vida de jogadores e NPCs
    • criado gráfico para mais um chefe: Daisybot, uma garota que atira flores

    carregando…

    Semana passada eu descobri que a SDL foi portada para o Nintendo DS, então eu pensei que seria legal portar o Rockbot para ele – eu adoraria recriar o Rockman 0 e 10 para jogar no meu DS já que a Capcom decidiu não portá-lo. Na verdade, a primeira razão para eu decidir criar todo o projeto Rockbot foi por estar brabo com a Capcom que decidiu não portar um jogo que parece de NES para plataformas antigas como o Playstation, e eu não tenho dinheiro ou desejo de comprar um console de nova geração.
    Mas bem, uma vez assentada a idéia, eu tinha que construir todo o SDK do DS e as bibliotecas SDL, o que se mostrou um desafio, porque a SDL foi baseada em uma evrsão antiga do kit de desenvolvimento e tive que corrigir alguns bugs antes de ter um ambiente funcional para compilar alguns testes. Uma vez terminado, eu teria que diminuir o uso de memória de 46MB para menos de 4MB, que é o limite do Nintedno DS.

    Aí vem a parte divertida, a maioria dos programadores de hoje são simplesmente preguiçosos de otimizar o código e usam o quanto de memória conseguirem, e frequentemente as pessoas acham que os jogos mais legais são os que as obrigam a comprar um computador inteiro novo, então podem ter um PC super modificado com luzes de laser interno e resfriamento a água e outras tolices frescas. Felizmente, os videogames não estão infestados por essa moda de atualizações frequentes. Então, a primeira coisa a fazer é usar variáveis menores, já que estou lidando com valores abaixo de 64 mil, todos os inteiros foram convertidos para short. O próximo passo foi limitar o uso de cores a 256, usando paleta web-safe, o que no fim das contas é legal, por parecer mais com os jogos antigos de NES. Finalmente, não dá para carregar toda uma fase na memória de uma vez, pois é isso o que mais usa memória, já que o núcleo em sí é bem pequeno. Então, eu reduzi o tamanho do mapa, e agora o jogo usa cerca de 5.1MB de RAM!

    Mas nós precisamos de mais, por isso eu planjeo usar os mesmos truques que jogos de NES antigos usavam: quebranco a fase em partes. Lembram-se como era lenta a transição de tela quando você estava em uma escadaria, ou alguns jogos tinham uma sala de chefe no meio? A razão é que, neste momento, vocês está liberando um mapa e carregando outro. Assim, acredito que será possível reduzir o uso de memória para 3MB.

    O passo seguinte é aprender a editor os makefiles dos exemplos de SDL para DS para recompilar o Rockbot para o Nintendo DS e testar. Mas como o fim de ano está próximo, por enquanto planejo trabalhar em gráficos.

    Outras notícias:
    – você pode sair da introdução pressionanto start
    – começado trabalho em um teileset para montar um cenário
    – feito um build teste para PS2, funciona bem, mas ainda tem problemas com delay/waiters.
    – O PS2 precisa de ajustes para carregar os drivers necessários de acordo com a unidade de onde o programa está rodando, e também setar o FILEPATH com ela
    – precisa ser refeito o sistema de tempo para frame de animação- por alguma razão eu perdi parte do código
    – devemos implementar escadarias e “teleporte” de um mapa para outro
    – implementar som usando SDL_mixer e doomsdl_mixer (PS2)

    loading…

    Last week I found that SDL was ported to Nintendo DS, so I tought that it would be a great thing to port Rockbot to it – I would love to recreate Rockman 9 and 10 to play on my DS once Capcom do not port it. Actually, the first reason I decided to create the whole Rockbot project was because I was angry Capcom did not wanted to port a game that is NES like to old platforms such as Playstation 2 and I do not have money, nor desire, to buy a new generation console.
    But well, once settled the idea, I had to build all the DS SDK and SDL libraries, that showed to be a chalenge, because the SDL port was to an old version of the devkit and I had to fix some bugs before having an working dev enviroenment to build some tests. Once it was done, phase two started, I have to diminish memory usage from 46 MB to less than 4MB, that is Nintendo DS limit.

    Now comes the fun part, most programmers today are just lazy to optimize code and take as much memory as he can get, and often people find that the good games are the ones that need a complete upgrade on your system, so you can have and ultra modded PC with internal lazer lights, water cooling and other pimp foolishes. Gladly videogames are not plagued by this upgrade-often fashionism. So, first thing is to use smaller variables, as I’m dealing with values under 64k, all integers were converted to short. Next step is to limit color usage to 256 colors, using web-safe palette, that is nice because looks more like old NES 8 bits style. Finally, we can’t load the whole stage in memory, because it is the thing that uses more space, as the program core footset by itself is very small. So, I’ve lowered the size of the map, and now the game uses only just around 5.1 MB in RAM!
    But we need more, so I plan to use the same tricks old NES games used: breacking the stage in parts. Remember how slow was the scrolling when you changed screens on a starircase? Always wondered why some games had a middle-boss room? This is why, in that moment, you just freed one map, and loaded a new one. So, I believe soon, we’ll be able to reduce the memory usage to 3MB.

    Next step is learn how to edit the makefiles from SDL+DS examples to compile Rockbot to Nintendo DS and test. But as holidays are near, for now I’ve work on intro and graphics.

    In other news:
    – you can skip intro by pressing enter
    – started to work on a tileset to build a scenary
    – made a build to test PS2, works OK but still have bugs with delay/waiters
    – PS2 needs adjustments to load necessary drivers according to the unity is is running from, also, set the FILEPATH with it.
    – needs to re-work the animation frame delay – for some reason I’ve lost part of code
    – must implement staircase and map “teleport” to another map
    – implement sound using SDL_mixer and doomsdl_mixer (PS2)

    Editor Update

    Iniciei o trabalho na ferramenta de edição de NPC. Ela será mais complexa no futuro, já que o usuário terá que adicionar cada frame gráfico, mas atualmente é bastante fácil pois não possui suporte a animação de NPCs.

    Started to work on the NPC editing tool. It will be kind of complex in the future, as the user will have to add each frame, but currently it is fair simple as it does not support animation for NPCs.

    [editing a NPC]

    Editando

    Durante o fim de semana, foram feitos os últimos retoques no editor básico, que já conta com boa parte das funcionalidades do editor antigo e no motor do jogo para suportar o novo formato de mapas.

    Uma desvantagem do novo formato, é ao contrário de idéia inicial de termos um arquivo por mapa, que decidimos por ter um número fixo de estágios e tamanho de mapas unificado em um único arquivo, para simplificar a programação do sistema. O problema reside exatamente no tamanho, um arquivo de jogo possui 34 Mega bytes, o que não é exatamente um problema hoje em dia, mas ainda desejamos diminuir, se possível, este valor, usando compressão via zlib ou outras alternativas.

    O que está faltando são ferramentas como desenhar uma linha ou fazer preenchimento com um tile, para o usuário não cansar de clicar o botão do mouse. Além disso temos que começar a organizar e implementar suporte a objetos mais complexos como NPCs, objetos móveis (implementando um segundo nível de tiles) e outras características para poder finalmente produzir um pequeno jogo na versão 1.0.