Te gry, które nie są wystarczająco szczęśliwe, aby działać na zablokowanej platformie, takie jak urządzenia przenośne, muszą działać w różnych formatach rozdzielczości i proporcjach.
W grze 3D możesz mieć interfejs lub graficzny interfejs użytkownika oparty na grafice rastrowej, aw grze 2D możesz mieć wiele quadów, które są naczyniami dla duszków.
Więc moje pytanie brzmi: jak podchodzisz do projektowania i obsługi treści w różnych rozdzielczościach i proporcjach? Załóżmy, że masz postać duszka, która jest duszka 300 x 400 pikseli i jest otoczona poziomem z płytek. Przy różnych rozdzielczościach / proporcjach zobaczysz zupełnie inny FOV. Lub jeśli masz HUD lub menu GUI, chciałbyś zachować niektóre rzeczy w tych samych pozycjach i w tym samym rozmiarze względem ekranu. Jednak źródłem grafiki są mapy bitowe rastrowe, a nie wektorowe.
Oczywiście problem był rozwiązywany wiele razy. Chciałbym usłyszeć o różnych podejściach, które do tej pory działały dla Ciebie. Czy utrzymujesz agnostyczną jednostkę „pikseli” o dowolnym rozmiarze, którą magicznie przekształcasz w potrzebne wymiary za pomocą formuły opartej na rozdzielczości i proporcjach lub innych podejść?
edytować:
Podsumowując, należy wyliczyć swoje proporcje. Najniższa kombinacja aspektu: rozdzielczość to ta, w której projektujesz ważne rzeczy. Bezpieczny obszar, jeśli chcesz. Te same proporcje, ale wyższe rozdzielczości to proste problemy ze skalowaniem. Treści artystyczne zostały zaprojektowane z myślą o najwyższej rozdzielczości. Większe proporcje pokazują po prostu więcej poziomu / FOV z prezentowanymi informacjami, które nie są krytyczne, jak w bezpiecznym obszarze. Coś jak na tym obrazie, który wykonałem .
Odpowiedzi:
Jeśli Twoje rozdzielczości są do siebie podobne, możesz po prostu zastosować tę samą grafikę we wszystkich z nich, może z pewnym zmniejszeniem w czasie wykonywania dla mniejszych ekranów. Jeśli różnią się one więcej niż dwa razy, musisz stworzyć (lub przynajmniej ulepszyć artystę) osobne zasoby dla różnych rozdzielczości.
W 2D rozdzielczość ma ogromny wpływ na sposób projektowania obrazów. Duszek, który wygląda na bogaty w szczegóły i realistyczny w wysokiej rozdzielczości, będzie zabłocony i nieczytelny. Podobnie, duszek, który jest czysty i ostry, patrząc na niską rozdzielczość, będzie wyglądał tanio i zbyt prosto w wysokiej rozdzielczości.
źródło
Jednym ze sposobów jest utworzenie zasobów obrazu w formacie wektorowym (SVG, Illustrator itp.) I przekonwertowanie ich na obrazy rastrowe zgodnie z potrzebami różnych wersji gry.
źródło
Podczas utrzymywania pełnego ekranu w różnych rozdzielczościach, jeśli chcesz doskonałości pikseli (tj. „Jak ją stworzył artysta”), problem polega na tym, że nie ma w pełni zautomatyzowanego sposobu skalowania duszków w górę LUB w dół (lub obracania ich), który nie „ wymagają ludzkiej aprobaty. Ostatecznie dzieje się tak, ponieważ umieszczenie pikseli jest subiektywne. Algorytm renderowania wykonuje pewne skalowanie lub obracanie i musi do tego celu wykorzystać pewne techniki aproksymacyjne, np. filtrowanie dwuliniowe. Jeśli nadal chcesz twarde krawędzie pikseli w celu uzyskania że „piksel doskonałość” (czyli nie za pomocą AA lub BF), wtedy będą musieli przyjąć, że skalowanie według jakiegoś non-power-of-2 stopnia jest zamiar do produkować niepożądane artefakty.
Interesujące podejście do podobnego problemu znajduje się w RotSprite , aplikacji / algorytmie zaprojektowanym do wykonywania „automatycznych” obrotów duszka. Rozumiem przez to, że po intensywnym przetwarzaniu uzyskuje on szereg możliwych pożądanych rezultatów końcowych, z których może wybrać operator. Wybrane ręcznie duszki ostatecznie trafiają do gry, co oznacza, że jest to etap tworzenia treści, a nie runtime.
Jedna z możliwych odpowiedzi na twoje pytanie „piksel agnostyczny o dowolnym magicznym wymiarze”: OpenGL (którego możesz być pewien, jeśli zamierzasz korzystać z różnych platform) działa zupełnie inaczej niż programowy renderer rastra. Bierze pod uwagę szerokość i wysokość wyświetlacza w zakresie zmiennoprzecinkowym 0,0-> 1,0 i odpowiednio mapuje piksele na GPU. Oczywiście może to samo w sobie powodować artefakty, chyba że np. BF jest włączony dla tekstur (takie są twoje duszki w OpenGL).
źródło