Nie ma nic lepszego niż procedura modyfikowania zmiennej, kompilowania kodu, który zajmuje kilka minut, wykonywania kodu, uświadomienia sobie, że poprawka była w niewłaściwym kierunku i powtarzania tego procesu od nowa.
Chciałbym rozpocząć interakcję z moją logiką gry w trakcie sesji. W jaki sposób sobie z tym poradziłeś?
Byłbym otwarty, aby usłyszeć rozwiązania dla iOS, C / C ++ i C # / XNA.
źródło
W C / C ++ prostą sztuczką jest umieszczenie twojego dostrajania w zmiennej statycznej, wyzwolenie punktu przerwania, zmiana statyczności w debuggerze i pozostaje on trwały aż do wyjścia.
źródło
Rejestrowanie HTTP jest ogromną pomocą i nie jest trudne do uruchomienia. Możesz nawet użyć silnika Google App jako szybkiego sposobu na uruchomienie tego. Dane są zawsze przydatne.
Skrypty i XML mogą być ponownie ładowane w locie i nie wymagają resetowania. Pozwól im upaść bez obniżania poziomu gry. Daje to dużą moc artystom, testerom i projektantom.
Menu debugowania w grze Proste menu debugowania w grze, które można spawnować jako dziecko i zamrażać grę za pomocą suwaków silnika i suwaków gry. Umożliwiając ci dostosowanie numerów kluczy w czasie wykonywania i być może wykonanie jednej lub dwóch funkcji debugowania lub zrzutów informacji.
Uwielbiam również gniazda ASYNC, jak wspomniano w odpowiedzi Davida
Łatwy w użyciu Twój zespół ds. Gier musi mieć możliwość dodawania tych narzędzi i korzystania z nich bardzo łatwo, w przeciwnym razie po prostu się nie przyzwyczają.
źródło
Wiem, że Sean James już to powiedział . Ale poważnie, Visual Studio (w szczególności narzędzia do debugowania) jest do tego świetne.
W dzisiejszych czasach nie używam C ++, więc nie jestem pewien, jak dobrze mają one zastosowanie. Ale dla C # (w tym w C # Express) masz:
A to może zaskoczyć twój umysł (wysadziło moje, gdy się o tym dowiedziałem):
Okno Natychmiastowe jest w zasadzie trudne do znalezienia (znajduje się w menu Debugowanie / Windows).
Jedynym poważnym minusem korzystania z debugera Visual C # jest to, że nie lubi zmieniać
const
wartości. Więc zazwyczaj zmieniam swoje wartości związane z rozgrywkąstatic
podczas ich ulepszania.(Również: posiadanie dwóch monitorów bardzo pomaga.)
Teraz muszę przyznać, że powyższa metoda polega na wstrzymaniu aplikacji - co może być niezadowalająco powolne w przypadku kilku szczególnie kłopotliwych rzeczy.
W tych rzadkich przypadkach to, co robię (w XNA), to po prostu włamać się do odrobiny kodu (prawdopodobnie używając Edycji i Kontynuuj, jak wyżej), aby pobrać
Keyboard.GetState().IsKeyDown()
(w rzeczywistości mam łatwiejsze do pisania opakowanie) i dostosować wartość przez naciśnięcia klawiszy. Coś bardziej skomplikowanego nie jest warte wysiłku.W praktyce to, co zwykle uważam za znacznie ważniejsze, to wizualizacja (zamiast modyfikowania) wartości w czasie rzeczywistym. Do tego mam ładną małą klasę, która może buforować linie i tekst do narysowania na końcu ramki. Jest także przydatny do szybkiego prototypowania.
(I po raz kolejny miło jest móc „edytować i kontynuować” te wizualizacje w czasie wykonywania.)
(źródło: andrewrussell.net )
( stąd )
Obawiam się, że nie mam obecnie „miłego” źródła do opublikowania (może później). Ale to w zasadzie tylko lista linii (dla tej biblioteki okrągłych linii ) i ciągów (dla wbudowanego w XNA SpriteBatch). Po prostu zrób to
public static
gdzieś i narysuj wszystko odpowiednią transformacją, aby wszystko pojawiło się w „przestrzeni świata” (a następnie wyczyść listy dla następnej klatki).źródło
Pisanie prostego systemu refleksji dla C / C ++ jest dość trywialne. W ten sposób możesz przeglądać wszystkie zmienne w grze (czy to za pomocą narzędzia sieciowego, klawiatury czy joypada) i zmieniać je na zawartość twojego serca. To działa dla mnie, ale wszystkie powyższe odpowiedzi są jednakowo ważne.
Edytowano, aby dodać: Ten wątek dotyczy teraz poprawiania, a nie debugowania zgodnie z tytułem wątku.
źródło
Jednym z rozwiązań, które widziałem w wielu studiach, jest zewnętrzna aplikacja do debugowania, która dołącza się do twojego programu za pomocą sieci. Ta aplikacja pokazuje określone zmienne narażone i pozwala edytować je w czasie rzeczywistym. Dodanie nowych zmiennych polega na dodaniu makr do kodu gry.
Początkowa konfiguracja makr po stronie gry, protokół serwer / klient (rozwiązania, które widziałem właśnie serializują xml tam iz powrotem) i pisanie klienta, jest duża. Jest to jednak niezwykle przydatne, zwłaszcza że korzystanie z sieci do komunikacji oznacza, że możesz pracować na dowolnej platformie.
źródło
Powiąż ładowanie i czytanie zmiennej w pliku tekstowym i uruchom ją za pomocą specjalnego skrótu klawiszowego lub polecenia z konsoli.
źródło