The issue with asymmetric tiles and an easy solution
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 40/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- javascript
- Domínio
- game-dev
Direção de pesquisa
Nenhum arquivo, teste ou ponto de entrada é especificado. Localize a lógica de correspondência dos lados das peças, rastreie como os códigos dos lados são gerados e comparados e, em seguida, verifique se os lados simétricos continuam correspondendo a si mesmos, enquanto os lados assimétricos correspondem apenas à sua representação invertida.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
the issue with the tiles in hand is the asymmetry
when you have a symmetric side on the tile, they can match to themselves (meaning the key you assigned to them), like in the first row here:

But as you can see in the second row, when dealing with tiles with asymmetric sides, the matches are incorrect. The logic used to match sides (having the same code) is not valid for asymmetrical sides, as it allows them to match themselves which is wrong visually.
A quick fix for this is to use a more complex code to identify sides and update the logic that finds that two sides match. My quick fix is to use a 3 character key for each side: '000', '111', '222', '333', ... , 'aaa', 'bbb', 'ccc', etc and for the asymmetrical sides use values as '001' and '100' for their mirrored side. When matching sides instead of comparing their code, you must compare their code vs the reversed string of their code. In this way, '000' matches '000' (which keeps symmetrical sides working just fine) but '001' will only find a match in the reversed key '100' fixing asymmetrical sides.
In the previous example 4 becomes '001' and 5 becomes '100', allowing for them to match to the correct side but not themselves.
Annex:
My suggested solution was to create a method that figures out 3 pixels colours for each side of the tile: left, center and right. Once you have them create an array with those 3 values. To connect a tile to another, just compare the array to the reverse order of itself. This implements the symmetrical / asymmetrical solution and will allow for interchangeable tiles on the fly.
- Linguagem predominante
- JavaScript
- Estrelas
- 219
- Forks
- 64
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de CodingTrain/Wave-Function-Collapse
-
Optimize grid updatesAberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 20/100
CodingTrain/Wave-Function-Collapse#41 · 2 reações ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
CodingTrain/Wave-Function-Collapse#38 · 2 comentários ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
CodingTrain/Wave-Function-Collapse#37 · 1 comentário ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 42/100
CodingTrain/Wave-Function-Collapse#35 · 1 comentário ·
-
Do NOT make a new gridAberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
Todas as issues de CodingTrain/Wave-Function-Collapse
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
yjh051108/dsh-routing-suite#216 ·
-
bug user-priority/P2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
t8y2/dbx#11718 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 4 dias
-
bug confirmed perf
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
videojs/video.js#9400 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
agent/scanner bug hive/hosted-available-lke648397-260827-5n31
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia