# CICWiki/Race Conditions
## O que é?

O Jogo Race Conditions foi desenvolvido junto com outros (Escalonando e Threadman) por professores da USP em 2019, e, como os outros jogos desenvolvidos, são softwares educacionais usados na disciplina de Sistemas Operacionais categorizados como Serious Games, jogos feitos com o propósito de solidificar a maestria da indústria e a importância de jogos em contextos de educação. O Race Conditions é um jogo que gira em torno de ritmo e atenção, tempo de reação e conhecimento da teoria. O objetivo consiste em manejar processos e coloca-los, de acordo com a estratégia escolhida, na região crítica. É papel do jogador, como comunicador dos processos, executar a estratégia no manejo deles, garantindo que todos sejam acessados.
No estudo sobre os jogos, traz-se a seguinte afirmativa: "Tres jogos, RaceConditions, Threadman e Escalonando, foram desenvolvidos [...] aplicando uma particularidade que se fez regra a ser respeitada: a de que a estrutura, mecânica e jogabilidade carregassem inteiramente a mensagem e o ensino que se anseia aplicar, ou seja, os assuntos e tópicos a serem destacados estariam, em principio, apresentados unicamente ao se jogar uma partida dos jogos, procurando não recorrer a informações escritas ou quizes que venham porventura mascarar atividades entediantes, pratica esta comum e observada em diversas tentativas de aplicar o conceito de serious game."
Ou seja, a vontade ao se desenvolver os jogos em questão era que o jogo trouxesse ao jogador tudo o que ele precisa saber tanto para jogar quanto para aprender o que o jogo objetivava-se a ensinar, não precisando de uma exposição previa dos conceitos da disciplina abordados ou mesmo uma exposição sobre o funcionamento do jogo.
A aplicação com os três jogos pode ser encontrada com versões para Windows, Linux e Mac, ainda com uma versão para Android em desenvolvimento.

## Como usar?

Primeiramente encontre, neste link, a aplicação com as três atividades (SOGames.exe). Escolha a resolução e outras configurações de vídeo e clique "Play!". O jogo então pedirá que ajuste o tamanho da tela e, após clicar "ok", levará ao menu principal onde pode ser feita a escolha do jogo. O jogo de ensino Race Conditions é o primeiro, e recomenda-se a visualização do tutorial antes de jogar. Neste, a traz pode-se ver três versões diferentes da tela do jogo (cada uma referenciando uma versão/estratégia diferente do jogo), e na frente são trazidas as informações (passando para a próxima explicação clicando no botão de seta "→") sobre como joga-lo e sobre o que os elementos do jogo representam no contexto de Sistemas Operacionais. Ao fim do tutorial, o jogo começa, mas ele pode também ser iniciado pelo menu principal. Estas informações serão trazidas a seguir, começando pelo contexto dentro da disciplina seguido das regras do jogo.
Processos em um computador, ao passarem pelo manejo de recursos de um sistema, podem passar pelo mesmo caminho. Ou seja, precisar acessar a mesma zona crítica que outro processo, o mesmo contexto ou recurso limitado que outro processo. Cabe ao sistema operacional da maquina gerir o acesso destes processos a essas zonas. O processo que chegar primeiro deve garantir o controle da região enquanto usa o recurso dela, ou um bug pode ocorrer. Esse fenômeno, onde o comportamento de um sistema e do uso de seus recursos depende de timing, é chamado Condição de Corrida.
No jogo, quadrados (processos) vem de 8 direções na tela, cruzando-a e passando pelo centro, onde há um grande circulo (zona crítica). É trabalho do jogador controlar o flux dos processos para que a região seja ocupada apenas por um processo de cada vez. Há três modos de jogo que refletem as três estratégias para controlar a zona crítica:
* Sleep/Wakeup: aqui, o jogador pode clicar nos processos para pausa-los e novamente para que voltem a andar. Assim, o jogador deve controla-los para que apenas um permaneça na zona em qualquer momento;
* Variáveis lock: nessa estratégia, o jogador tem uma ação, que é clicar na zona crítica para torna-la travada (no contexto da disciplina, ativa a variável de parada). Isso significa que nenhum novo processo pode entrar e usar o recurso até que a variável destrave a zona, representado no jogo por outro clique na zona. Processos devem entrar na zona enquanto verde e, se outro processo quiser entrar, o jogador deve travar a zona até que o primeiro processo termine, e então pode destrava-la para que o próximo processo entre;
* Strict Alternation: a zona crítica, nessa estratégia, possui apenas uma entrada que permite que apenas processos vindos da direção certa usem a zona crítica. No jogo isso é traduzido na zona crítica estar quase completamente vermelha, salvo por uma zona verde que aponta para uma das 8 posições por onde os processos vem. Com um clique, o jogador pode girar a zona crítica, podendo mudar a direção que sua entrada aponta. Com isso, deve garantir que apenas um processo entre por vez, o próximo vindo apenas quando o anterior terminar de usar os recursos da zona.
O jogo não tem fim, como os outros do estudo, e apenas um processo entrando na zona enquanto outro ja esta lá termina o jogo e revela a pontuação feita na partida.

## Vantagens e Desvantagens

Jogos educacionais possuem alta taxa de engajamento quando comparados com métodos tradicionais, e esse engajamento estimula o aluno e ajuda na retenção da atenção dele na matéria e retenção da matéria na mente do aluno.
Especificamente do jogo Race Conditions, a opção de escolher uma das 3 estratégias de manejo de processos pode revelar as vantagens e desvantagens de cada uma. Joga-se com as três e uma boa imagem de como cada uma possui seu valor se forma.
No artigo detalhando a criação deste e dos outros dois jogos, houve uma analise quantitativa de desempenho comparando duas turmas que tiveram, salve os jogos, o mesmo planejamento ao longo de um semestre, e a turma com os jogos percebeu um aumento de 40% na nota média da turma em relação a outra.
Uma desvantagem óbvia é a necessidade de um computador. Ou pior, do código original do jogo.

## Categorias
### Disciplinas

* Sistemas Operacionais

### Palavras-Chave

* EAD
* Gamificação
* Software