Blog
Notas dos bastidores: como nossos jogos de quebra-cabeça são feitos, de onde vêm os quebra-cabeças clássicos e o que aprendemos ao criá-los.
- Por que meu link da App Store deu 404 e a página mostrava capturas de 2018Notas de desenvolvimento sobre duas surpresas com um app antigo de iPhone que ganhou uma versão nova: um link genérico da App Store que dava "não encontrado" fora de um país e uma página que continuava mostrando capturas de 2018.
- Diretriz 2.1 da App Store "Information Needed": o que envieiNotas de desenvolvimento: três dos meus últimos nove envios para iPhone voltaram como Rejected pela Guideline 2.1 Information Needed. Não era um relatório de erros, e sim um pedido de informações. Veja o que a Apple pediu no meu caso e o que enviei.
- Capturas de tela da App Store sem celular: Robolectric, um carregador de imagens falso e um navegador sem interfaceNotas de desenvolvimento: como faço capturas de 1206x2622 para a App Store dos meus apps de iPhone em um notebook com Windows, sem dispositivo e sem minutos de build na nuvem, desenhando a interface Compose compartilhada em testes unitários com Robolectric.
- Um código QR para duas lojas de apps: uma pequena página de redirecionamentoNotas de desenvolvimento: como meu site passou de um código QR do Google Play para um único QR universal que leva um celular Android ao Google Play e um iPhone à App Store, com uma página de redirecionamento curta, as armadilhas que encontrei e as desvantagens.
- Reescrever para Kotlin Multiplatform sem mudar o comportamento: o código antigo como oráculo de testesNotas de desenvolvimento: como substituí XmlPullParser, HtmlCompat, SimpleDateFormat e java.util.Random por Kotlin comum puro para o iOS, mantendo o código antigo nos testes para provar que o resultado continua idêntico, e o que essa prova não cobre.
- Uma lista remota sem servidor para "Mais jogos": um arquivo JSON no GitHub PagesNotas de desenvolvimento: como a lista de promoção cruzada de uma dúzia de jogos Android saiu do código do app para um único arquivo JSON no GitHub Pages, com cache, cópia offline e verificações rígidas, de modo que um jogo novo não exige atualizar os outros.
- Depurar um iPhone no Windows por USB: capturas de tela e logs com PythonNotas de desenvolvimento: como tiro capturas de tela, abro um app e leio seu log em um iPhone 7 a partir de um notebook com Windows com o app Apple Devices e a ferramenta Python pymobiledevice3, com um exemplo real de por que um banner de anúncios estava vazio.
- Migrar um app Android para Kotlin Multiplatform com AGP 9: sete armadilhasNotas de desenvolvimento: sete coisas que quebraram ou ficaram em silêncio ao levar um jogo Android com Compose para um módulo compartilhado de Kotlin Multiplatform com o Android Gradle Plugin 9, e como uma comparação de capturas de tela pegou uma delas.
- Publicar um app de iPhone sem Mac: Kotlin Multiplatform, um Mac na nuvem e TestFlightNotas de desenvolvimento: como levei um jogo Android em Kotlin e Compose ao TestFlight e à revisão da App Store a partir de um notebook com Windows, com Kotlin Multiplatform, um runner de macOS no GitHub Actions e uma chave de API do App Store Connect.
- Game feel no Jetpack Compose sem motor de jogoSquash, stretch, partículas, som sintetizado e vibração no Jetpack Compose: como um quebra-cabeça de blocos ganha game feel com um Canvas e um laço.
- Detectar um anúncio intersticial travado no Android com eventosUm jogador diz que a tela congelou após um anúncio, mas não há falha registrada. Como registrar o ciclo de vida do AdMob no Firebase Analytics.
- Duas dúzias de apps Android mantidas por um só devComo um dev compartilha avisos de atualização, salvamento na nuvem, promoção cruzada remota e um site gerado em cerca de duas dúzias de apps.
Como uma cartela de Tombala é gerada: seis cartelas, noventa númerosNotas de desenvolvimento: como o Tombalings cria conjuntos de seis cartelas que cobrem de 1 a 90 exatamente uma vez e como os rivais são cronometrados para parecerem humanos.
Como criamos níveis de pentominós com Dancing LinksUma história de desenvolvimento: como a cobertura exata e os Dancing Links de Knuth resolvem e geram níveis do Pentolings, de 63 posições a desafios únicos.
Pentominós: a história das 12 peças e de GolombO que é um pentominó, como Solomon Golomb os batizou nos anos 1950, como Martin Gardner os tornou famosos e por que um 6x10 tem 2339 soluções.- Aniversário em 29 de fevereiro: como contar a idade?Como quem nasceu em 29 de fevereiro conta a idade e comemora: regra do ano bissexto (4, 100, 400), 28 de fevereiro ou 1º de março e os apps.
- Como calcular a idade exata em anos, meses e diasComo calcular a idade exata em anos, meses e dias à mão, com exemplos de empréstimo, os dias até o aniversário e o problema dos meses desiguais.
- Erros e limites do IMC: atletas, idade, gravidez, unidadesErros comuns e limites do IMC: por que atletas, idosos, gravidez e crianças exigem cuidado, e como confundir cm/kg com ft/lb estraga o resultado.
- O que é o IMC: como calcular e interpretar o resultadoO que é o índice de massa corporal (IMC), a fórmula kg/m2, as categorias da OMS para adultos, exemplos e como achar o peso saudável para sua altura.
- De onde vêm os dados de terremotos? AFAD, Kandilli, USGSPor que duas instituições dão magnitudes diferentes para o mesmo terremoto? Como AFAD, Kandilli e outras publicam, revisam e atualizam suas listas.
- Terremoto: o que fazer antes, durante e depois (guia AFAD)Uma lista tranquila baseada nos guias da AFAD: mochila de emergência, Abaixar-Cobrir-Segurar durante o tremor e passos depois. Ligue 112.
- Magnitude e intensidade de um terremoto: qual é a diferença?A magnitude mede a energia liberada por um terremoto; a intensidade, o tremor em um lugar. Entenda as escalas de Richter, Mw e Mercalli.
- Jogo da velha: história de um jogo resolvido e suas variantesDo OXO no EDSAC em 1952 ao jogo da velha definitivo: por que é um jogo resolvido, quão pequena é sua árvore de jogo e quais variantes existem.
- Como centenas de fases de quebra-cabeça são geradas e verificadasComo jogos de quebra-cabeça criam centenas de fases sem desenhá-las à mão: geradores, resolvedores, medir dificuldade e subida de encosta.
- Como dar o mesmo quebra-cabeça diário a todos sem servidorComo um jogo pode dar o mesmo quebra-cabeça diário a todos sem servidor: semente a partir da data, aleatoriedade determinística, fusos horários e trapaça.
História do Mahjong Paciência e a diferença para o MahjongBreve história do Mahjong Paciência, de um jogo de computador de 1981 aos celulares de hoje, e no que ele difere do Mahjong clássico.
Como garantimos que um Mahjong Paciência tenha soluçãoComo o Tilelings monta cada distribuição de Mahjong Paciência de trás para frente, a partir de um tabuleiro vazio, para que sempre exista solução.