🤔 Para Refletir :
"Fazer um jogo é um ótimo aprendizado para se notar que normalmente o que é bom não é por acaso e sim fruto de muito planejamento e trabalho."
- Rafael_Sol_MAKER

Gincana de Natal - Central de Pesquisas

Estado
Tópico fechado. Não é possível fazer postagens nela.
Resque comentou:
Arquivo GameManager Linha #37

Código:
  def scroll_speed_increment
    return $game_score / 100.0 / Graphics.frame_rate
  end

Os métodos em Ruby sempre retornam a ultima linha por padrão, o return acaba sendo usado para forçar uma saídas do método antes que chegue na ultima linha, igual você fez no código abaixo:

EX:

Código:
  def generate_obstacle(y)
    return unless rand(100) < 90
    range = (1...width).to_a - track_range(y).to_a
    return if range.empty?
    type = obstacle_types_by_rate.sample
    x = range.sample
    if @obstacles[y].nil?
      @obstacles[y] = Game_Obstacle.new(type, x, y)
    else
      @obstacles[y].type = type
      @obstacles[y].x = x
      @obstacles[y].y = y
    end
  end

O método da linha #37 poderia ser alterado para:

Código:
  def scroll_speed_increment
    $game_score / 100.0 / Graphics.frame_rate
  end
Estou ciente desse aspecto da linguagem (como você mesmo apontou), mas também não vejo de que forma isso prejudica o código.

Muitas vezes fica até meio ruim de entender a intenção de uma função em Ruby quando o retorno é implícito e a expressão retornada é mais complexa (pode nem ser o caso, mas ainda assim).
Aliás, os próprios scripts padrão do RPG Maker por vezes fazem isso, vide linhas 24-26 do Window_Command:

Código:
def window_width
  return 160
end
Claro, esses scripts também têm retornos implícitos, mas só pra exemplificar mesmo que na verdade tanto faz.

Resque comentou:
Arquivo Spriteset_Christmas Linhas #24, #26 e #27.

Código:
  def create_viewports
    @viewport1 = Viewport.new
    @viewport2 = Viewport.new
    @viewport2.z = 100
    @viewport3 = Viewport.new
    @viewport3.z = 300
  end

Utilizar números (1, 2 e 3) no final do nome de variáveis 'viewport' dificulta a leitura, cada viewport poderia carregar a finalidade em seu próprio nome:

EX:

Código:
  def create_viewports
    @viewport_track = Viewport.new
    @viewport_santa = Viewport.new
    @viewport_santa.z = 100
    @viewport_score = Viewport.new
    @viewport_score.z = 300
  end

Código:
  def update
    @viewport_track.update
    @viewport_santa.update
    @viewport_score.update
    ...

Arquivo Spriteset_Map (padrão do RPG Maker), linhas 26-32:
Código:
def create_viewports
  @viewport1 = Viewport.new
  @viewport2 = Viewport.new
  @viewport3 = Viewport.new
  @viewport2.z = 50
  @viewport3.z = 100
end
Só segui o modelo proposto pelos próprios scripts que vêm com o RPG Maker. E na verdade esses Viewports não são só para o papai noel, pro caminho ou pro score, eles são as 1ª, 2ª e 3ª camadas da tela, que representam (mas não se limitam a) o chão, os personagens e a interface, respectivamente. A ideia é poder incluir mais coisas neles (inclusive, a neve e os obstáculos estão no viewport2 também), sem ter que mudar o nome da variável por ter deixado de fazer sentido ou criar uma nova mesmo. Aliás, se cada Viewport servisse só pra um objeto, não tinha nem porque ter Viewports em primeiro lugar x)

Resque comentou:
No começo do jogo, se o personagem for carregado para a extrema direita, ele nunca será congelado mesmo estando na neve:

IxBKowz.png

excuse.jpg


Foi um probleminha com os limites da tela, lol. Resolve mudando (Game_Map, 100-105):
Código:
  #--------------------------------------------------------------------------
  # * Verifica se uma posição está na trilha
  #--------------------------------------------------------------------------
  def on_track?(x, y)
    @data[x, y] != SNOW_TILE
  end
Para:
Código:
  #--------------------------------------------------------------------------
  # * Verifica se uma posição está na trilha
  #--------------------------------------------------------------------------
  def on_track?(x, y)
    (@data[x, y] or SNOW_TILE) != SNOW_TILE
  end
Mas realmente, não esperava por essa kkk
 
HermesPasser comentou:
esqueci de postar aqui ontem. É culpa do sono hehehe. Uma azul


Uma caixa azul saindo [member=1330]HermesPasser[/member] !

Sistema de luzes de natal

- O jogador precisa gerenciar a energia de um gerador, para que as luzes acendam da maneira correta de acordo com ritmo pré-estabelecido ;
- Uma espécie de medidor de voltagem deve ser adicionado para orientar o jogador a manter a carga correta por um determinado período de tempo;
- Se o jogador não conseguir manter a voltagem, na maior parte do tempo, dentro do nível estabelecido no medidor de voltagem, perderá.

- O sistema deve ser configurável para que:

1) Cada sequencia de luzes tenha características próprias de duração e nível de voltagem.
 
[member=78]Brandt[/member]

Brandt comentou:
Estou ciente desse aspecto da linguagem (como você mesmo apontou), mas também não vejo de que forma isso prejudica o código.

Muitas vezes fica até meio ruim de entender a intenção de uma função em Ruby quando o retorno é implícito e a expressão retornada é mais complexa (pode nem ser o caso, mas ainda assim).
Aliás, os próprios scripts padrão do RPG Maker por vezes fazem isso, vide linhas 24-26 do Window_Command:

Código:
def window_width
  return 160
end

Claro, esses scripts também têm retornos implícitos, mas só pra exemplificar mesmo que na verdade tanto faz.

Uma pena que o RGSS3 tenha essa falta de padronização em alguns locais do código.

Mesmo a linguagem Ruby permitindo utilizar as duas formas, a falta de padronização não é bom por acabar confundindo os mais novos.

Brandt comentou:
Arquivo Spriteset_Map (padrão do RPG Maker), linhas 26-32:
Código:
def create_viewports
  @viewport1 = Viewport.new
  @viewport2 = Viewport.new
  @viewport3 = Viewport.new
  @viewport2.z = 50
  @viewport3.z = 100
end
Só segui o modelo proposto pelos próprios scripts que vêm com o RPG Maker. E na verdade esses Viewports não são só para o papai noel, pro caminho ou pro score, eles são as 1ª, 2ª e 3ª camadas da tela, que representam (mas não se limitam a) o chão, os personagens e a interface, respectivamente. A ideia é poder incluir mais coisas neles (inclusive, a neve e os obstáculos estão no viewport2 também), sem ter que mudar o nome da variável por ter deixado de fazer sentido ou criar uma nova mesmo. Aliás, se cada Viewport servisse só pra um objeto, não tinha nem porque ter Viewports em primeiro lugar x)

O RGSS3 poderia usar viewport_layer_1, viewport_layer_2, viewport_layer_3, pois deixar apenas um numero no final, acaba exigindo que o programador tenha a regra de negócio na cabeça (não que isso seja ruim), mas dificulta a leitura do código.



Questionamentos aceitos, pontuação alterada de 220P para 230P.
 
HermesPasser comentou:

Uma caixa verde saindo [member=1330]HermesPasser[/member] !


Sistemas de buracos

- O sistema deve permitir que o jogador controle o Papai Noel na sua tarefa de tapar os buracos da rua para evitar acidentes de carro nesse Natal;
- O jogador precisa cobrir o maior numero de buracos possível no tempo de 60 segundos (configurável);
- Um contador de pontuação deverá ser incrementado a cada buraco que for coberto com sucesso.

- O sistema deve ser configurável para que:

1) O tempo cronometrado seja de fácil configuração
2) Os buracos apareçam com mais frequência dependendo do nível de dificuldade.
 
HermesPasser comentou:

Uma caixa verde saindo [member=1330]HermesPasser[/member] !


Sistema de Rifas de Natal

- O jogador precisa convencer os NPCs a comprarem suas rifas, que valem uma cesta de natal;
- Cada NPC necessita de diálogos e missões específicas para ser convencido a comprar a rifa;
- Um tempo limite para a venda das rifas deve ser adicionado, se acabar e nem todas foram vendidas, fim de jogo;
- O sistema precisa gerar o ganhador da rifa aleatoriamente, para que não haja repetição nos resultados;

- O sistema deve ser configurável para que:

1) A quantidade espaços na rifa seja customizável.
2) NPCs sejam adicionados/excluídos.
 
CleanWater comentou:
Caixa azul, manda o desafio. ^_^


Uma caixa azul saindo [member=1673]CleanWater[/member]  !


Fogueira do Noel

- O sistema deve permitir que o jogador controle o Papai Noel que deve pular várias fogueiras no mapa;
- As fogueiras vão ser cada vez mais difíceis de serem puladas conforme o tempo de jogo vai passando;
- O sistema deve somar a pontuação de cada fogueira pulada.
 
Resque comentou:
- O jogador precisa convencer os NPCs a comprarem suas rifas, que valem uma cesta de natal;
- Cada NPC necessita de diálogos e missões específicas para ser convencido a comprar a rifa;
- Um tempo limite para a venda das rifas deve ser adicionado, se acabar e nem todas foram vendidas, fim de jogo;
- O sistema precisa gerar o ganhador da rifa aleatoriamente, para que não haja repetição nos resultados;

- O sistema deve ser configurável para que:

1) A quantidade espaços na rifa seja customizável.
2) NPCs sejam adicionados/excluídos.

Essa é a que eu tinha dropado
 
HermesPasser comentou:
Resque comentou:
- O jogador precisa convencer os NPCs a comprarem suas rifas, que valem uma cesta de natal;
- Cada NPC necessita de diálogos e missões específicas para ser convencido a comprar a rifa;
- Um tempo limite para a venda das rifas deve ser adicionado, se acabar e nem todas foram vendidas, fim de jogo;
- O sistema precisa gerar o ganhador da rifa aleatoriamente, para que não haja repetição nos resultados;

- O sistema deve ser configurável para que:

1) A quantidade espaços na rifa seja customizável.
2) NPCs sejam adicionados/excluídos.

Essa é a que eu tinha dropado


Uma caixa verde saindo [member=1330]HermesPasser[/member] !


Labirinto do Papai Noel

- O jogador precisa conduzir o Papai Noel para fora de um labirinto;
- O labirinto deve ser maior do que a tela visível do jogador;
- O mapa deve ser gerado aleatoriamente a cada partida;
- O sistema deve ter um contador em segundos (configurável)

- O sistema precisa ser configurável para que:

1) O jogador escolha a dificuldade;
2) O tempo para sair do labirinto seja de fácil customização;
 
HermesPasser comentou:
Um azul E UM FELIZ NATAL
e as namoradinhas?

Uma caixa azul saindo [member=1330]HermesPasser[/member] !



Boliche do Papai Noel

- O jogador precisa controlar o Papai Noel em um jogo de Boliche;
- Uma seta ficará passando se movimentando para a direita e esquerda da tela;
- O jogador precisa apertar a tecla espaço quando a seta estiver no meio da tela e assim conseguir um "strike";
- Caso o jogador não consiga para a seta no centro da tela, só algumas bolas serão derrubadas;

- O sistema precisa ser configurável para que:

1) O jogador escolha a dificuldade;
 
HermesPasser comentou:




Saindo uma caixa azul [member=1330]HermesPasser[/member] !!

Os gatos do Papai Noel

- O jogador precisa controlar o Papai Noel e ajudar na sua grande missão de dar comida para todos os gatos de sua casa;
- Os gatos estão com muita fome, e enquanto você coloca comida na tigela de um, o outro já terminou de comer tudo;
- Cada gato possui a sua própria tigela;
- Você deve alimentar a maior quantidade de gatos possível em menos de 60 segundos;
- O sistema irá contabilizar 10 pontos a cada vez que um gato comer toda a comida da tigela.

- O sistema precisa ser configurável para que:

1) O jogador escolha a dificuldade;
2) O tempo máximo seja personalizável;
3) O nome dos gatos sejam customizáveis;
 
CleanWater comentou:
Pula Fogueiras

Uma Amarela agora! :awesome:


Saindo uma caixa amarela [member=1673]CleanWater[/member] !!

O verdadeiro Papai Noel

- Nesse Natal, muitas pessoas gostam de se vestir de Papai Noel, mas só um é o verdadeiro;
- O sistema precisa permitir que o verdadeiro Papai Noel seja encontrado em um mapa cheio de Ogro Noel;
- O jogador precisa encontrar com o verdadeiro Papai Noel  várias vezes em um intervalo de 1 minuto;
- Cada vez que o Papai Noel for encontrado, ele aparecerá sutilmente em algum outro lugar do mapa para ser encontrado novamente.

- O sistema precisa ser configurável para que:

1) O jogador escolha a dificuldade;
 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo Inferior