Bem, não sei se o que posto a seguir segue a idéia pura do tópico. Não sou programador, sou apenas um curioso que gosta de brincar de desenvolver jogos 2D. Minha praia mesmo é a parte gráfica, desenhar os assets e/ou concepts.
Mas assim mesmo, brincando sem compromisso, estou fazendo isso aqui:
http://gamejolt.com/games/navinha-little-ship/192960
Neste simples jogo de nave, ao qual tentei dar a aparência dos clássicos dos arcades e do mega drive, eu estava sem tempo de desenhar um mapa completo para o jogo. Então lembrei de algo que tentei há alguns anos, no flash, para outro jogo meu, "
PIXEL FIGHTERS" . Nele, eu adaptei um pouco da idéia que Carol Shaw usou em RIVER RAID: criar um script que resultasse na geração aleatória dos elementos de cenário. No
devlog de "NAVINHA", eu explico com quase todos os detalhes a técnica que eu usei. Mas em resumo, consta de usar no mínimo dois objetos contendo vários frames. Esses objetos surgem no alto da tela (sendo o jogo de rolagem vertical) e no momento de sua criação, uma variável indexada ao número de seus frames terá seu valor definido aleatoriamente; Quando o objeto surge, de acordo com o número aleatoriamente escolhido, será exibido na tela o frame correspondente ao número setado na variável. Recomendo usar no mínimo dois objetos nesse esquema porque assim a exibição do mapa não é interrompida, caso contrário, se usar apenas um objeto, este exibirá sua parte do mapa e somente o fará após sumir da tela, sendo "resetado" e mandado de volta para o alto da tela, com outro número de variável, e consequentemente, outra imagem a exibir. Por outro lado, se inserir objetos demais o mapa fica muito cheio de elementos e dependendo do lay out utilizado, torna o jogo confuso aos olhos do jogador. Em "NAVINHA" utilizei quatro objetos para formar o cenário, após aperfeiçoar o esquema. Quando comecei a imaginar a firula, usei seis objetos em "PIXEL FIGHTERS", e acabei sacrificando a performance, como vocês podem ver na página de teste do jogo. Só roda bem em máquinas parrudas :)
Vejam a primeira versão do sistema rodando no flash:
https://www.youtube.com/watch?v=VAe4HodY7Zg
Em "NAVINHA", o esquema funcionou perfeitamente e o jogo roda liso. Tomei o cuidado de adicionar um código para "respawn randômico" desses objetos, e assim, eles nunca nascem na mesma posição, quando exibem o mesmo frame. Já cheguei a observar o mapa passando até duas horas e não repetiu nenhuma ilha (a 1ª fase se passa sobre o mar) exatamente como da vez anterior. Para mim, o resultado ficou muito bom e os códigos para isso, nos objetos não passam de dez linhas, quando chegam a isso. Na página do jogo, vocês podem ver alguns videos e assim conferir o resultado. Na imagem a seguir, uma montagem mostrando vários tipos de ilhas criadas aleatoriamente. Eu gostei, vou usar esse esquema em outros jogos.

Não sei se minha idéia se encaixa exatamente no puro conceito de programação procedural, mas aí está :)