Większość firm ma edytor lub zmienny system kontrolny do ulepszania gier, ale czy istnieją jakieś rozwiązania pośrednie dla tego problemu? W przeszłości napisałem dwa takie systemy i pracowałem z pięcioma, może sześcioma różnymi, ale żaden z nich nie był dostępny.
Każde z tych rodzimych rozwiązań miało problemy, od konieczności ciągłego wyszukiwania wartości, po niemożność zapisania aktualnego stanu zmiennych.
Czy są jakieś dojrzałe biblioteki / aplikacje sterujące Config / Runtime-zmienne?
Generalnie piszę w C ++, ale wydaje mi się, że dojrzały edytor ustawień / zmiennych prawdopodobnie byłby oparty na gniazdach (a zatem w pewnym stopniu agnostyczny dla języka), ponieważ cały obecny sprzęt programistyczny oprócz Nintendo zapewnia mechanizm komunikacji z serwerami. Implementacja kodu również musiałaby być dość prosta (podoba mi się artykuł hot_var / TweakableConstants udostępniony przez Oskara, ale to nie jest pakiet)
Być może pomysł Stałej Drugi można dopasować do Twoich potrzeb. Jest tak użyteczny, że można by pomyśleć , że potrzebujesz kompleksowego rozwiązania, aby mieć skuteczną kontrolę zmiennych w czasie wykonywania, ale w rzeczywistości implementacja jest prawie zbyt prosta. Oryginalny dyskusji tej techniki jest również interesująca lektura.
Przykład:
H
Makro rozwija się do czegoś podobnegoHotValue(x, __FILE__, __LINE__, __COUNTER__)
. To rejestruje wartość w jakimś rejestrze globalnym. Następnie używaj funkcjiRefreshHotValues()
, którą wywołujesz w regularnych odstępach czasu. Funkcja wyszukuje każdy wpis w rejestrze, analizuje określony plik źródłowy i ponownie ładuje gorącą wartość.Gdy modyfikujesz rzeczywisty kod źródłowy, masz tam wytrwałość.
Oczywiście to nie zadziała, gdy nie
H()
jest oceniana każda klatka, ale istnieją sposoby na rozwiązanie tego, jak omówiono tutaj .Być może możesz rozwinąć ten pomysł na rozwiązanie oparte na gniazdach. Może wystąpić znaczny narzut wydajności, aby wywołać
HotValue()
każdą ramkę, ale ponieważ bardzo łatwo można skompilować makro całkowicie zastępując je stałą, nie stanowi to problemu.źródło
H(int, myvar, 5)
a gdy zmiany plików zastępujeszmyvar
w pamięci. Zobacz mollyrocket.com/forums/viewtopic.php?p=5395#5395AntTweakBar jest naprawdę przydatny do tego, co chcesz robić, jednak przez większość czasu chciałbyś mieć metody, które „kompilują się” w wersji z niektórymi makrami lub podobnymi.
źródło
Z pytania dotyczącego debugowania w czasie rzeczywistym pochodzi odpowiedź Davida McGrawa na temat programistów AsyncSocket dla iOS. Zobacz jego odpowiedź, aby uzyskać więcej informacji.
źródło
Zarządzanie ustawieniami wydaje się być jedną z tych rzeczy, które są przygotowywane od nowa dla każdej gry, prawdopodobnie ze względu na to, jak stosunkowo jest to proste i duża zmienność potrzebnych typów ustawień. Zakładając, że masz przyzwoitą konfigurację zaplecza pamięci (SQL / cokolwiek), możesz zakodować solidne rozwiązanie do zarządzania ustawieniami w ciągu dnia lub 2, więc nie wydaje się, aby istniała realna potrzeba biznesowa dla rozwiązania oprogramowania pośredniego. Myślę, że w większości przypadków najlepszym rozwiązaniem jest przechowywanie tego, co używasz do przechowywania informacji o graczach.
źródło
Właściwie ostatnio myślałem o takiej rzeczy i myślę, że byłby to świetny kandydat na aplikację na Androida w połączeniu z małą biblioteką w dowolnym języku . Aplikacja byłaby konfigurowalnym zestawem przycisków, przełączników, rozwijanych menu itp. (Dowolny widżet, jaki chcesz), i wysyłałaby akcje za pośrednictwem sieci WLAN (lub USB, jeśli chcesz to skomplikować) do biblioteki. Biblioteka odrodziłaby oddzielny wątek od gry i wiedziałaby, które kontrolki na telefonie z Androidem odpowiadają zmiennym w grze (ustawiłeś je w kodzie startowym) i miałoby połączenie z aplikacją na Androida.
W ten sposób bałagan w grze jest tak prosty, jak dotykanie telefonu. Możesz nawet mieć w telefonie niektóre pola tekstowe, które pokazują wartości zmiennych w czasie rzeczywistym z gry, lub możesz przenieść bibliotekę do przodu
stdin
lubstderr
do przewijanego obszaru tekstowego w telefonie. Opcje są nieograniczone!Jedyny prawdziwy problem dotyczy prędkości. Jeśli szybkość i czas reakcji są kluczowe, wystarczy podłączyć telefon przez USB, a adb (debugger dla Androida) obsługuje porty przesyłania przez USB do telefonu. Ale w przeciwnym razie WLAN miałoby bardzo małe opóźnienie, które moim zdaniem byłoby wystarczające do tego celu.
Nie wydaje mi się, żeby coś takiego zostało napisane powyżej, ale zdecydowanie zastanawiałem się nad jego napisaniem. (Po prostu nie byłem wystarczająco daleko w rozwoju własnych gier, aby tego potrzebować)
Oczywiście ci z użytkowników Apple mogą prawdopodobnie zrobić to samo z urządzeniami iDevices. Osobiście uważam, że programowanie na iOS jest o rząd wielkości trudniejsze niż programowanie na Androida, i oczywiście powyższą aplikację można łatwo opublikować na rynku Android w celu łatwej dystrybucji, podczas gdy Apple prawdopodobnie nie zezwoli na narzędzia programistyczne w sklepie z aplikacjami, więc czujesz, że platforma Android lepiej pasuje do tego narzędzia.
źródło