Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gry, gierki i języki
Forum PHP.pl > Inne > Hydepark
Adi32
Witajcie,

zacząłem ostatnio z nudów tworzyć rożne rzeczy, przyszło mi do głowy napisanie prostego tetrisa a jako, że jestem programistą PHP to napisałem prototyp w JS.
Wiem, że JS nie jest językiem do takich rzeczy jednak nie sądziłem, że spodoba mi się pisanie prostych gierek.
Teraz mam problem tego typu, że JS na prawdę się do tego nie nadaje, co bym nie próbował rozwinąć, dodać możliwości itp. to JS nie daje rady.

Link:
http://cms.freeline.pl/tetris.php

i takie coś na szybko (sterowanie: awd)
http://cms.freeline.pl/gra.php

A teraz o co mi chodzi...

Zastanawia mnie jaki czas musiałbym poświęcić aby zrobić jakąś "normalną" gierkę, i w jakim języku?

Nie musi to być aplikacja przeglądarkowa, zależy mi na szybkim nauczeniu się języka.

Z JAVA nigdy nie miałem nic wspólnego.
Z FLASHem i ActionScript też nie ale od dawna planuje to zmieić.
W C++ napisałem kilka aplikacji sieciowych.

Może coś poradzicie?

Pozdrawiam - Adrian
Crozin
To Ty nie dajesz co najwyżej rady, bo JS jak najbardziej sobie z "grą" pokroju tetrisa poradzi.

W każdym z tych języków możesz to zrobić.
Adi32
Cytat(Crozin @ 4.04.2012, 16:43:33 ) *
To Ty nie dajesz co najwyżej rady, bo JS jak najbardziej sobie z "grą" pokroju tetrisa poradzi.

W każdym z tych języków możesz to zrobić.


Przy każdym ruchu JS musi sprawdzić czy istnieje kolizja, to jest obciążające ale z tym jeszcze JS sobie radzi, niewiele ponadto.
Ja twierdzę, że JS nie jest najlepszym językiem do gier.
Nie napisałem, że chce robić tetrisy tylko coś bardziej zaawansowanego i jestem pewien, że są lepsze języki niż JS.
Wiem, że mogę takie rzeczy robić w każdym z tych języków, jednak sądziłem, że któryś będzie się nadawał bardziej i dlatego postanowiłem napisać.
cojack
W Unity możesz pisać nawet w JS radzi sobie b.dobrze. Możesz zobaczyć WebGL (obsługa w JS), albo Flash z Stage 3D (as3) no jeszcze masz Jave, C++ (od groma silników) no i C# z XNA od Winshitu. Pozdro.
Piogola
Cytat(Adi32 @ 4.04.2012, 16:52:48 ) *
Przy każdym ruchu JS musi sprawdzić czy istnieje kolizja, to jest obciążające ale z tym jeszcze JS sobie radzi, niewiele ponadto.

W którym języku nie będziesz musiał tego robić ? W każdym trzeba...
Crozin
Cytat
Przy każdym ruchu JS musi sprawdzić czy istnieje kolizja, to jest obciążające ale z tym jeszcze JS sobie radzi, niewiele ponadto.
A myślisz, że w C to przy generowaniu każdej klatki nie trzeba sprawdzać kolizji?
JS demonem szybkości w porównaniu do C czy Javy to może i nie jest, ale platforma ta bez problemu da sobie radę z dużo, dużo bardziej wymagającymi zadaniami. Widocznie to Ty nie potrafisz tego dobrze napisać (w innych językach będziesz miał dokładnie te same problemy).

Jeżeli to ma działać w przeglądarce to właściwie tylko JS albo Flash.
Jeżeli ma działać jako aplikacja desktopowa to rozważałbym C/C++/Java/C# - chociaż możliwości jest znacznie więcej.
!*!
Cytat(Adi32 @ 4.04.2012, 16:30:51 ) *
Teraz mam problem tego typu, że JS na prawdę się do tego nie nadaje, co bym nie próbował rozwinąć, dodać możliwości itp. to JS nie daje rady.


To nie JS się do tego nie nadaje, tylko Twoja wiedza jest za mała. W kodzie masz takie kwiatki:

Cytat
klocki[3][3] = '<div class="in" style="position:absolute; top:0px; left:0px; width:25px;height:25px;background: #'+kolor+'">'+
'</div><div class="in" style="position:absolute; top:0px; left:25px; width:25px;height:25px;background: #'+kolor+'">'+
'</div><div class="in" style="position:absolute; top:0px; left:50px; width:25px;height:25px;background: #'+kolor+'">'+
'</div><div class="in" style="position:absolute; top:0px; left:75px; width:25px;height:25px;background: #'+kolor+'"></div>';


Myślisz że to jest poprawne? Poczytaj o optymalizacji kodu, sprawdzaj różne możliwości... optymalizuj, optymalizuj i jeszcze raz optymalizuj. Gry przez przeglądarkę która miałaby działać na każdej platformie systemowej, nie napiszesz w niczym innym niż JS i teoretycznie flash, choć ten bym sobie darował, powoli jest na wymarciu i nie wszyscy go wspierają, większość gier powstaje przy użyciu JS i canvas w html5.
Adi32
Cytat(Crozin @ 4.04.2012, 17:12:42 ) *
A myślisz, że w C to przy generowaniu każdej klatki nie trzeba sprawdzać kolizji?
JS demonem szybkości w porównaniu do C czy Javy to może i nie jest, ale platforma ta bez problemu da sobie radę z dużo, dużo bardziej wymagającymi zadaniami. Widocznie to Ty nie potrafisz tego dobrze napisać (w innych językach będziesz miał dokładnie te same problemy).

Jeżeli to ma działać w przeglądarce to właściwie tylko JS albo Flash.
Jeżeli ma działać jako aplikacja desktopowa to rozważałbym C/C++/Java/C# - chociaż możliwości jest znacznie więcej.


W takim razie myliłem sie. Jest jeszcze taki motyw, że po kilku minutach grania zdarzają się przycinki.

Cytat(!*! @ 4.04.2012, 17:54:11 ) *
To nie JS się do tego nie nadaje, tylko Twoja wiedza jest za mała. W kodzie masz takie kwiatki:



Myślisz że to jest poprawne? Poczytaj o optymalizacji kodu, sprawdzaj różne możliwości... optymalizuj, optymalizuj i jeszcze raz optymalizuj. Gry przez przeglądarkę która miałaby działać na każdej platformie systemowej, nie napiszesz w niczym innym niż JS i teoretycznie flash, choć ten bym sobie darował, powoli jest na wymarciu i nie wszyscy go wspierają, większość gier powstaje przy użyciu JS i canvas w html5.


Te kwiatki to długi klocek, może słabo to wygląda ale jak inaczej miałbym go zrobić?
#luq
Cytat(Adi32 @ 4.04.2012, 18:04:52 ) *
jak inaczej miałbym go zrobić?

opisując każdy klocek jako tablice 2d? http://luq10.wordpress.com/2009/04/02/tetris/

W końcu w C++ sobie byś divów nie zrobił smile.gif
Adi32
Cytat(#luq @ 4.04.2012, 19:18:40 ) *
opisując każdy klocek jako tablice 2d? http://luq10.wordpress.com/2009/04/02/tetris/

W końcu w C++ sobie byś divów nie zrobił smile.gif


No jako tablcę, to jest HTML i spadają własnie DIVY, mogą to być i spany a nawet linki (hehe) ale cóżby innego miało spadać?
Gdybym pisał to w C++ to na pewno inaczej bym to zrobił, w ogóle to tego tetrisa pisałem kilka godzin, jest prosty, pisany z nudów. Myślę, że jakbym się przyłożył to inaczej by to wyglądało.

Pod tym linkiem który wkleiłeś programista ma problem z wsuwaniem klocka pod klocek, u mnie to nie problem - problematyczne jednak jest to, że klocek najpierw wykonuje ruch a potem sprawdza czy zachodzi kolizja i wykonuje kolejny ruch lub wysyła następny klocek także przesunięcie należy wykonać wcześniej...
Crozin
Zacznijmy może od tego, że do rysownia grafiki w JS służy Canvas, a nie DOM.
Adi32
Cytat(Crozin @ 4.04.2012, 20:00:02 ) *
Zacznijmy może od tego, że do rysownia grafiki w JS służy Canvas, a nie DOM.


Canvas biggrin.gif Pierwszy słysze (poza tym kilka postów wyżej). Własnie o to mi chodziło - dzięki Crozin.
Niktoś
Cytat
Zacznijmy może od tego, że do rysownia grafiki w JS służy Canvas, a nie DOM.

A nie jest to już HTML5?
!*!
Adi32 - robisz coś, nie znając podstaw. Chodziło mi o to że tworzysz elementy jako tekst '<div>klocek</div>' to nie jest poprawne, a na pewno nie jest wydajne. W JS czy jQ są do tego odpowiednie narzędzia, bez których ciężko zrobić coś lepszego, bo to podstawy podstaw.

Niktoś - a co to ma do rzeczy?
Adi32
Cytat(!*! @ 4.04.2012, 20:37:17 ) *
Adi32 - robisz coś, nie znając podstaw. Chodziło mi o to że tworzysz elementy jako tekst '<div>klocek</div>' to nie jest poprawne, a na pewno nie jest wydajne. W JS czy jQ są do tego odpowiednie narzędzia, bez których ciężko zrobić coś lepszego, bo to podstawy podstaw.


Taak, lepiej nic nie robić... Czasami nie wie sie, że nie zna sie podstaw i coś sie robi, potem pisze sie o tym na forum i poznaje sie podstawy jak wszystko dobrze idzie.
Coś czuje, że się panowie wymądrzacie.
W każdym razie dzięki.
Niktoś
Cytat
Niktoś - a co to ma do rzeczy?

Że nie na wszystkim to pójdzie ,ale w ramach zabawy to można tego użyć.
http://caniuse.com/#search=canvas
!*!
Tu chodzi o to że jak już coś robić, to robić to dobrze wink.gif ucząc się przy tym. Przejrzałem Twój kod, jak na 1 prace, nie jest źle, ALE wielu kwestii nie przemyślałeś i wtedy narzekasz że się JS nie nadaje. Jest wiele artykułów o optymalizacji kodu javascript w internecie, wiele też porusza kwestie projektowania gier, zarówno tych bardzo prostych jak tetris czy wąż, do tych bardziej zaawansowanych tworzące świat izometryczny czy 3d.

Co z tego że możesz narysować klocek na kilka sposób skoro tylko jeden będzie dobry/wydajny (czepiam się wydajności, bo to dość ważne w grach) i zadziała wszędzie. Można to zrobić odwołując się przez DOM, choć jest to powolne, można narysować w canvas (choć tu trzeba zrobić małe obejścia dla IE>8), możesz też "narysować" jako obrazek SVN. Nie ważne jak to zrobisz, tylko czy sposób w jaki go tworzysz jest najlepszy, bo to że użyłeś FW jakim jest jQ, wcale nie musi tego oznaczać.

Cytat(Niktoś @ 4.04.2012, 20:43:48 ) *
Że nie na wszystkim to pójdzie ,ale w ramach zabawy to można tego użyć.
http://caniuse.com/#search=canvas



Pudło. Canvas działa wszędzie prócz IE, ale można zastosować excanvas.sourceforge.net i już zadziała. Podobnie zresztą jest z samym html5.
Adi32
Dzięki za informacje.
W takim razie zacznę przerabiać kod z myślą o optymalizacji.
Planuję teraz zrobić gierke "Tank" - czołgi jak z pegasusa.

Cytat
świat izometryczny czy 3d


W js, takie rzeczy? A coś więcej? Ciekawy temat...
!*!
3d to głównie webGL, jednak tu ze wsparciem jest kiepsko http://caniuse.com/#search=webgl choć niewątpliwie to przyszłość tworzenia gier komputerowych.

2d czy izometria też ma wiele odmian. http://www.tonypa.pri.ee/tbw/tut16.html flash, ale to powinno Ci naświetlić jak coś takiego stworzyć. Podobnie jak przy tworzeniu klocków, technika jest ta sama, zmienia się tylko położenie elementów. Sam stworzyłem silnik izometryczny który ma tworzyć gry podobne do open ttd, czy fallout 2. Jednak napisanie czegoś co będzie renderować mapy to jedno, bo prócz izometrii trzeba przemyśleć wiele czynników pobocznych, jak wyświetlanie elementów (pokazuj tylko to co widzi gracz), poruszanie się, kolizje, efekty i masa innych rzeczy. Przykład użycia canvas http://scurker.com/projects/particles/

A tutaj izometria http://code.google.com/p/jgen/ projekt nie jest już rozwijany i działa chyba tylko w chrome/safari, ale możesz podpatrzeć kod od izometrii, kolizji(imo b.dobry - co nie znaczy że mógłby być lepszy wink.gif) itp.
Adi32
Dzięki !*!, będę się rozwijał w tych tematach.
Stworzenie Open ttd to musiałoby być cośsmile.gif Świetna gierka.
Theqos
Bierz się za MMO. Gdzieś tutaj masz kod na start http://browserquest.mozilla.org/
Adi32
Cytat(Theqos @ 5.04.2012, 08:01:37 ) *
Bierz się za MMO. Gdzieś tutaj masz kod na start http://browserquest.mozilla.org/


I w tym kierunku warto się rozwinąć smile.gif Dzięki.

Jak już jest ten temat to może się jeszcze przyda - nie wiem czy jest sens ładować małe podstawowe pytanie do forum tematycznego.
Klientka zażyczyła sobie do swojego portalu latającego motylka - różowy motylek ma sobie fruwać i czasami siadać na elementach strony.
Z możliwością przegonienia go kliknięciem. Nie mam pomysłu jak się za to zabrać... Zastanawiałem się nad flaszowym motylkiem a całym flaszem ruszać za pomocą JS,
przy okazji podając mu przez flash-wars pozycję w jakiej ma się aktualnie znaleźć nasz motyl. Macie może jakieś pomysły? Zacząłem się uczyć canvas nie miałem wiele czasu ale zdaje mi się, że też mogłoby się nadać...

Dzięki i pozdrawiam.
!*!
Animacja motyla jako flash czy gif. Ustalasz współrzędne w jakim miejscu ma się zatrzymać (w zależności od układu, możesz podczepić to pod elementy lub współrzędne top left) + zmiana grafiki że siedzi, motyw z tym że ma odlecieć w inne miejsce to nic innego jak hover na nim.
Twist
Klient czesto nie ma pojecia o www i wymysla takie rzeczy. Naszym zadaniem (ludzi, ktorzy maja pojecie) jest doradztwo i wytlumaczenie, dlaczego 'ten pomysl jest ciekawy, ale lepiej teog nie robic'

Chyba, ze sztuka dla sztuki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.