Wpis z mikrobloga

Hej mirki,

Ostatnio(czyli od jakiś 2 lat) znalazłem sobie hobby i zgłaszam błędy w Godocie(silniku do tworzenia gier), które zazwyczaj powodują jego wysypywanie się.

Stworzyłem nawet do tego testowy projekt składający się coś około z 25000 linii, w których znaczną część kopiowałem ręcznie. Do poprawnego działania wymagał ciągłego dodawania nowych i usuwania starych funkcji zgodnie z tym co Godot udostępnia przez GDScript(coś ala Python, tyle że zintegrowany z silnikiem). Dodatkowo przy raportowaniu problemów rzadko udawało mi się stworzyć projekt testowy mniejszy niż 100 linijek kodu, co tylko utrudniało znalezienie przyczyny wywalania się aplikacji.(Projekt - https://github.com/qarmin/The-worst-Godot-test-project )

Z racji jednak że jestem leniwy i brakuje mi czasu na wszystko, to stworzyłem sobie fuzzer(niegdyś dość prosty), który automatycznie testuje wszystkie dostępne funkcje z wszystkich dostępnych obiektów z różnymi parametrami a wszystko loguje do pliku i wypisuje na ekran. Dzięki temu mogę prosto zmniejszyć ilość kodu powiodującego błędy do zwykle max 5 linijek. Przez ostatnie pół roku działania znalazł ponad 100 crashy, przy niewielkim nakładzie pracy. (Projekt - https://github.com/qarmin/Qarminer )

Już kilkakrotnie się spotkałem z tym, że nawet bardzo prosty kod powodował wywalanie się aplikacji w różnych miejscach. Prawdopodobnie w tych przypadkach poddałbym się, ponieważ debugowanie takiego zachowania np. przez GDB nie jest zbyt przyjemne a jest bardzo czasochłonne, ale całe szczęście że istnieje coś takiego jak Address i Undefined Sanitizers, które nie dość że wskazują konkretne miejsce gdzie np. użycie błędnej pamięci miało miejsce, to opisują dokładnie gdzie ta pamięć została zaalokowana, usunięta etc.

Do tej pory zgłosiłem około 300 błędów związanymi z wyłączaniem się Godota/projektu z czego już ponad 250 zostało naprawionych.

Jeśli w przeszłości odbiliście się od Godota ze względu na stabilność, to polecam spróbować go jeszcze raz(zwłaszcza 2D), ponieważ ja, jak i reszta deweloperów postaraliśmy się by była ona jak największa.

#godot #gamedev #programowanie
  • 17
  • Odpowiedz
@qarmin: wykonujesz bożą pracę cumplu, godot to super projekt i przyda mu się każda pomoc w rywalizacji z molochami, a co dopiero taka. Rozumiem że swój projekt też planujesz wypuścić albo już wypuściłeś jako open source?
  • Odpowiedz
@qarmin: nie wszyscy bohaterowie noszą peleryny ( ͡° ͜ʖ ͡°) dzięki za twój wkład w open source, jak tylko w swoim napiętym harmonogramie znajdę czas by pokombinować coś na własną rękę to z chęcia skorzystam z Godota, bo jest na mojej liście todo od jakiegoś roku.
  • Odpowiedz
konto usunięte via Wykop Mobilny (Android)
  • 0
@qarmin: dobra robota, ale trochę nie rozumiem jak do tych błędów może dojść - oni nie testują tego jednostkowo/integracyjnie?

Nie chcę tu wyjść na takiego co się #!$%@? do twórców darmowego narzędzia, które obecnie jest chyba w top5 silników, ale może potrzebują pomocy z dostarczaniem test case'ów
  • Odpowiedz
@Wap30: Co do projektu to już go wypuściłem, ale czekam ciągle na przeportowanie do Godota 4.0 - https://github.com/qarmin/Pole-Mrowkowe

dobra robota, ale trochę nie rozumiem jak do tych błędów może dojść - oni nie testują tego jednostkowo/integracyjnie?

Nie chcę tu wyjść na takiego co się #!$%@? do twórców darmowego narzędzia, które obecnie jest chyba w top5 silników, ale może potrzebują pomocy z dostarczaniem test case'ów


@powaznyczlowiek: W Godocie są obecne testy
  • Odpowiedz
@qarmin: Dzięki za Twoją prace! Chociaż jeszcze nie udało mi się wywalić godota przy projektach które robiłam, to teraz mam jeszcze mniejszą szanse żeby niechcący się na czymś zaciąć.
  • Odpowiedz