Uzjel Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Tu DOWNLOAD Breakout Klasyczna gra z 1976 będzie pierwszym sprawdzianem dla waszych umiejętności pisania botów. Każdy zna grę, w której gracz porusza paletką i odbija kulkę w stronę klocków. W Breakout jedynym zadaniem gracza jest zniszczenie wszystkich klocków, aby jednak nie zanudzić programistów, gra różni się od oryginału - zawiera niektóre bonusy wzorowane na grze DX-ball. Bonusy mogą być przydatne dla gracza/bota lub utrudniające mu grę. Jak są liczone punkty? W grze liczone są dwa parametry. Pierwszy to punkty - za każdy zbity klocek gracz otrzymuje 100 punktów. Drugim parametrem jest czas. Ostatecznym wynikiem, który zadecyduje o miejscu, które zajmie gracz jest jednak ilość punktów podzielona na czas - ilość punktów na sekundę. Więcej punktów - lepszy wynik. Poziom trudności Jest raczej niski. Sprawdźcie najprostszego bota GML x = obj_ball.x + random_range(-20,20)który wykręca wyniki w okolicach 60 punktów. Dla bardziej zaawansowanych ciekawymi zadaniami mogą okazać się takie rzeczy jak odbijanie wielu piłek, unikanie złych a łapanie dobrych bonusów i precyzyjne ustawianie paletki. Zasady gry Gra kończy się, kiedy bot: zbije wszystkie klocki lub straci wszystkie życia lub czas przekroczy cztery minuty Paletka ma ograniczoną prędkość - nie będzie sytuacji w której przy kilku piłkach paletka będzie się teleportowała do najniższej lub unikała w ten sposób złych bonusów. Średnia jest liczona jak gracz będzie miał więcej niż 1000 punktów. Piłka po odbijaniu się od czegokolwiek minimalnie przyspiesza, ale jej prędkość jest ograniczona. Utrata wszystkich piłek znajdujących się na mapie kończy się utratą życia i wstawieniu nowej piłki, która jest wolniejsza - znowu musi się rozpędzić. Piłka jest odbijana od paletki w inny sposób niż w klasycznym breakoucie, przypomina bardziej współczesne odsłony. Bonusy nie są pochowane w klockach, a pojawiają się co 6 zbitych bloków - unikamy w ten sposób sytuacji, gdy ktoś miał więcej szczęścia i trafił na ''szczęśliwy bloczek'' w którym był przydatny bonus. Ustawienie klocków będzie inne w grze rankingowej. Stracenie wszystkich żyć eliminuje gracza i jego wynik nie jest brany pod uwagę. Zasady pisania kodu Cały kod umieszczajcie w skryptach bar_int i bar_ai, możecie tworzyć własne skrypty Nie można tworzyć nowych instancji i wpływać na nie lub na istniejące. Nie można modyfikować żadnych zmiennych wbudowanych dla żadnej instancji z wyjątkiem pozycji x obiektu obj_bar. Oczywiście wszystkie zmienne można odczytywać. Jeżeli nastąpi próba zmiany zmiennej x obiektu obj_bar to zostanie ona obcięta do dozwolonej wartości, gra sama tego pilnuje. Uniemożliwia to przeskakiwanie paletki Nie można wpływać na zmienne globalne, szczególnie na global.game_rank_score :P Dopilnujcie, żeby kod nie powodował błędów i był wydajny. Jeżeli coś takiego się zdarzy to autor zostanie o tym poinformowany i będzie miał szansę na poprawkę. Jeżeli autor użyje czegoś co zostanie przeze mnie uznane za nieuczciwe a nie zostało podane to w tym regulaminie, skontaktujemy się i dojdziemy do tego jak to naprawić - bądźcie wyrozumiali, jesteśmy tu po to aby się dobrze bawić :) Jeżeli ktoś prześle pracę przed terminem, nie będzie miał możliwości dosłania ''lepszej wersji''. Ma to zapobiec codziennym aktualizacją. Zastanówcie się więc dwa razy zanim prześlecie pracę. Bonusy Bonusy są identyfikowane po image_index 0 - +1000 punktów 1 - -1000 punktów 2 - Węższa paletka o 33% 3 - Szersza paletka o 33% 4 - Rozdwojenie każdej piłki Wyniki Każdy bot będzie miał trzy szanse, aby zdobyć jak najwyższy wynik. Boty innych graczy będą grały na tych samych seedach. Przebieg zawodów będzie opublikowany na YouTubie. Uczestnicy nie muszą (ale mogą) przesyłać całego projektu. Wystarczy kod z bar_int i bar_ai Na prace czekam do 28 lutego Przesyłajcie je na Prywatną Wiadomość. (wyniki powinny pojawić się w ciągu tygodnia.) Łatwe? Łatwe. Tu DOWNLOAD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 jak rozumiem seedami przy ocenianiu będą losowe, duże liczby, nie znane w tym momencie, tak że AI ma działać dobrze dla dowolnego ustawienia? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 22 Lutego 2016 Autor Udostępnij Opublikowano 22 Lutego 2016 Dokładnie tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hamtaren Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Cały kod umieszczajcie w skryptach bar_int i bar_ai Oznacza to, że nie mogę tworzyć sobie dodatkowych skryptów, które będą wykorzystywane tylko w bar_int i bar_ai, tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 22 Lutego 2016 Autor Udostępnij Opublikowano 22 Lutego 2016 Jeżeli masz taką potrzebę, ale wtedy podeślij plik GMZ. Dobrze, że o tym wspomniałeś - już poprawiłem w regulaminie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Jaka jest maksymalna odległość jaką może pokonać paletka w ciągu jednego stepu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danielus Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 i są jakieś punkty za pozostałe życia czy można je poświęcać dla bonusów? EDIT: Poważniejszy problem - co w przypadku gdy ktoś nabije szybko dużo punktów po czym specjalnie przegra? czas ma mały punktów dużo, wynik będzie duży. Może po -100 pkt za każdy klocek który nie zostanie zbity? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 @Sutikku: Maksymalna szybkość paletki jest równa szerokości paletki dzielonej na dwa. Ja mam pytania: czy w losowo generowanych mapach podczas testu klocki będą miały te same wymiary, co w dostępnym projekcie? Czy te klocki mogą dochodzić do samego brzegu mapy? Czy klocki zawsze będą ułożone w pozycjach będącymi wielokrotnościami liczby większej od 1 (ewentualnie przesuniętych o pewną stałą)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 22 Lutego 2016 Autor Udostępnij Opublikowano 22 Lutego 2016 i są jakieś punkty za pozostałe życia czy można je poświęcać dla bonusów? EDIT: Poważniejszy problem - co w przypadku gdy ktoś nabije szybko dużo punktów po czym specjalnie przegra? czas ma mały punktów dużo, wynik będzie duży. Może po -100 pkt za każdy klocek który nie zostanie zbity? Stracenie wszystkich żyć eliminuje gracza i jego wynik nie jest brany pod uwagę. W sumie logiczne ale o tym nie napisałem. Dodane do regulaminu. Ja mam pytania: czy w losowo generowanych mapach podczas testu klocki będą miały te same wymiary, co w dostępnym projekcie? Czy te klocki mogą dochodzić do samego brzegu mapy? Czy klocki zawsze będą ułożone w pozycjach będącymi wielokrotnościami liczby większej od 1 (ewentualnie przesuniętych o pewną stałą)? Mapa nie będzie losowo generowana, tylko będzie trochę inna. Zasada będzie taka sama, żadnych udziwnień, innych wymiarów i kształtów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dester Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Jak na złość, znienawidzony breakout... I tak spróbuję, ale wynik będzie co najmniej głupi. e: Czy taki efekt przeskakiwania paletki jak w domyślnym bocie(podobny) będzie uznany za błąd? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 e: Czy taki efekt przeskakiwania paletki jak w domyślnym bocie(podobny) będzie uznany za błąd? Nie bo jest ograniczona odległość skoku. W step paletki. Jak wyżej podali odległość skoku nie przekracza połowy długości paletki GML if point_distance(x,0,xprevious,0) > bar_width/2 { if x > xprevious then {x = xprevious; x += bar_width/2} else { x = xprevious; x -= bar_width/2; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dester Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Nie bo jest ograniczona odległość skoku. W step paletki. Jak wyżej podali odległość skoku nie przekracza połowy długości paletki GML if point_distance(x,0,xprevious,0) > bar_width/2 { if x > xprevious then {x = xprevious; x += bar_width/2} else { x = xprevious; x -= bar_width/2; } } Nie zrozumiałeś o co chodzi, ale to już nieważne :D Czy podczas testów zmieni się wielkość planszy? PS. Jak na razie nabijam score 9800 time 14400 rank 40 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 @bLaze: Jedynymi wartościami, które można zmieniać (poza dodanymi przez siebie w bar_int) jest pozycja X paetki. Możesz z tą wartością robić, co ci się żywnie podoba (w bar_ai), gra sama reguluje tę pozycję, aby była zgodna z zasadami. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dester Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Najnowsza wersja mojego bota jest świetna, ale nie umie zbić ostatniego klocka. Ale jeszcze zobaczymy >:D Widzimy się jutro, odmeldowuję się :D PS. Z tych filmików na YT będzie masa nowych członków, mówię wam :) PPS. Może niech każdy nazwie swojego bota? To by było ciekawe :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Czas jest do kiedy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Do 28 lutego, tak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 22 Lutego 2016 Autor Udostępnij Opublikowano 22 Lutego 2016 Tak, trochę bardziej wyeksponowałem tą część tekstu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Rozumiem że nie można edytować żadnych zmiennych poza x paletki, ale można odczytywać wartości każdej innej zmiennej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 22 Lutego 2016 Udostępnij Opublikowano 22 Lutego 2016 Można odczytywać wszystkie zmienne. Trzeci myślnik Oczywiście wszystkie zmienne można odczytywać. A pytanko, można użyć tego? http://www.gmlscripts.com/script/lines_intersect czy wymyślać koło na nowo? :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 23 Lutego 2016 Autor Udostępnij Opublikowano 23 Lutego 2016 No a czemu nie? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 Zgłaszam bug: Maksymalna prędkość piłki to 20 height paletki to 16 Poza tym: GML if point_distance(x,0,xprevious,0) > bar_width/2 { if x > xprevious then {x = xprevious; x += bar_width/2} else { x = xprevious; x -= bar_width/2; } } GML if abs(x-xprevious) > bar_width/2 { if x > xprevious then {x = xprevious; x += bar_width/2} else { x = xprevious; x -= bar_width/2; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 height paletki to 16 A nie width? Poza tym: GML if point_distance(x,0,xprevious,0) > bar_width/2 { if x > xprevious then {x = xprevious; x += bar_width/2} else { x = xprevious; x -= bar_width/2; } } GML if abs(x-xprevious) > bar_width/2 { if x > xprevious then {x = xprevious; x += bar_width/2} else { x = xprevious; x -= bar_width/2; } } Powalająca poprawa wydajności A tak na poważnie, mam nadzieję że Uzjel nagra działanie każdego bota aby można było spojrzeć co poszło nie tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 A może teraz tego bugu nie ma? Sprawdziłem edytując piłkę i jest ok. Wcześniej 2 razy zauważyłem że przy największej prędkości piłka lecąc pionowo przeleciała przez paletkę. Edit: Rank 146 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 Jak collision line nie jest robione to tak to sie konczy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 23 Lutego 2016 Autor Udostępnij Opublikowano 23 Lutego 2016 A może teraz tego bugu nie ma? Sprawdziłem edytując piłkę i jest ok. Wcześniej 2 razy zauważyłem że przy największej prędkości piłka lecąc pionowo przeleciała przez paletkę. Sprawdziłem. Nie ma takiej możliwości. Jak collision line nie jest robione to tak to sie konczy. Collision line warto używać jak prędkość obiektu jest ponad dwa razy większa od jego dłuższego boku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dester Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 Gotowe prace wysyłać na PW czy jak? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 23 Lutego 2016 Autor Udostępnij Opublikowano 23 Lutego 2016 Tak na PW Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 Im wyższy ma się rank tym lepiej czy gorzej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 Gorzej. Ps: wygrywa osoba z najlepszym rankiem? Każdy który wygra przechodzi do następnego etapu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 23 Lutego 2016 Udostępnij Opublikowano 23 Lutego 2016 Mam Rank 70 w ostatnich 2 grach, A mój bocik robi jeszcze jeden błąd :D To dobry wynik ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi