Döşeme tabanlı oyunda gizlenmemiş karoları bulma


9

2B karo tabanlı bir oyun üzerinde çalışıyorum ve şu anda çalışmak için 2d eşdeğer gölge hacimleri elde etmeye çalışıyorum. Gölgelendirmesi gereken yüzeyleri bulmakta zorlanıyorum. Oyunun herhangi bir noktasından, gizlenmemiş yüzleri veya tüm kutucuğu bulmam gerekiyor.

Sorum şu: bu fayansları / kenarları mümkün olduğunca hızlı bir şekilde nasıl bulabilirim?

Genel görüş hattını ve etkilenen fayansları gösteren resim

Yanıtlar:



2

Bu tam bir cevap değil, ama umarım yardımcı olacaktır.

Harita / döşeme ayarınız statik veya dinamik mi? Statik ise, çevrimdışı işlem gerçekleştirmenizi ve bu şekilde olabildiğince ön hesaplama yapmanızı şiddetle öneririm. İstediğiniz herhangi bir şekilde yapabilirsiniz (yeniden yayınlama veya daha akıllıca bir şey), ancak çok hızlı yapmayı umursamıyorsunuz çünkü seviyelerinizi "pişirirken" hepsi çevrimdışı olacak. Her bir noktadan hangi döşemelerin tam olarak göründüğünü önceden hesaplayabilir veya bir tür daha büyük bölgeler ve her bir bölgeden potansiyel olarak görünen tüm döşemeleri oluşturabilirsiniz.

Ardından, çalışma zamanında, görünür döşemelerin sorgusu çok basit ve çok hızlı olmalıdır.

Elbette, dinamik olarak oluşturulmuş düzeyleriniz varsa, bu hiç geçerli değildir :-)


1

Bunu bir C # roguelike için nasıl uyguladığımı burada görebilirsiniz . Kod son derece optimize edilmemiş, ancak benim için yeterince hızlı görünüyor ve (daha da önemlisi) okunması oldukça kolay olmalı. Temelde her seferinde bir oktan çalışan basit bir gölge döküm algoritması yapıyor.


0

Hangi platformda olduğunuzdan emin değilim, ancak sadece yayın yapan varlıklarınız etrafında bir daire büyütecek kadar çok hızlı olmayacak (çok fazla olmadığı sürece) herhangi bir platformu düşünemiyorum ve daire algoritmanızda 'çizilecek' kiremit sağlam bir kiremit ve böylece ışık engelleme. Oradan, tıkalı olan veya olmayan daire parçalarını takip etmek zorunda kalacağınız için biraz daha zorlayıcı olurdu, ama yapacağım şey bu olurdu. Başka bir seçenek, ışınları döşeme çözünürlüğü alanında bir daireye (yine oldukça hızlı) dökmek ve katı bir döşemeye çarptığında her ışını durdurmak olacaktır.


Peki, çoğunlukla Flash ve Javascript oyunları yapıyorum, ama şu anda, biraz sonra aşağı inmeye başlayan bir tür kaba kuvvet yöntemi yapıyorum. Bunu nasıl optimize edeceğimizi anlayabilir miyim, bu oyunu oldukça düzgün çalıştırabilirim.
Ryan S

Flaşta kolayca yapılabilir olmalı, belki kaba kuvvetiniz optimize edilebilir. Ayrıca, genel olarak, her kareyi güncellemeniz gerekmez, böylece bir sonraki durumu birkaç kare üzerinde önceden hesaplayabilirsiniz
Kaj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.