Gra internetowa, sposoby, optymalność, rozszerzalność |
Gra internetowa, sposoby, optymalność, rozszerzalność |
4.07.2006, 14:06:10
Post
#1
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) |
Witam
Jeśli taki temat już był, to proszę, podajcie mi linka. A więc: Chce stworzyć grę internetową w php, typu OGame itd.. Gra była by rozbudowana, i dlatego chciałbym aby była łatwo rozszerzana, wykorzystam oczywiście szablony i pliki językowe..., oraz będzie napisana obiektowo. Chciałbym abyście przedstawili inne, lepsze rozwiązania : Cytat A) Jakbyście zapisali ustawienia użytkownika typu np: avatar, czy domyślne ustawienia wojska? Dobrym rozwiązaniem byłoby dodawanie kolumn do tabeli użytkowników i/lub inna tabela z domyślnymi ustawieniami? Cytat B ) Umieszczanie możliwych do budowy budynków, posiadania wojska? Lepszym rozwiązaniem byłoby stworzenie jednej tabeli z kolumnami właściwości, czy inna tabela dla każdego typu? Cytat B.a)Oraz do tego wymagania? Ja to widze tak: do każdej tabeli dodaje kolumny. Cytat C) Umieszczanie w tabeli posiadane a) budynki Lepiej stworzyć nową tabele, czy dodać kolumny do tabeli użytkownika? b ) wojsko Czy optymalne jest umieszczanie każdej jednostki w nowym wierszu? Cytat D) Kopalnie które dodają coś nam co sekunde? Może to być także złudzenie, a surowce dodawane były by przy interakcjii z użytkownikiem. Wyczytałem że odpalanie skryptu co sekunde jest mało optymalne Cytat D.a) Wykonywanie akcjii niezależnie od aktywności użytkownika? Powiedzmy że user buduje kopalnie która powstanie za 2.5h Czy zrobienie tego sposobem jak wyżej, przy czym są pewne priorytety, czyt. obliczane są surowce wyprodukowane przez kopalnie, do momentu ataku przeciwnika, po czym są dalej liczone, lub poprostu w momencie ataku przeliczane są sorowce na czas ataku, jest dobre? Mam nadzieje że podchodzi pod pro . Z góry dzięki za odpowiedzi Ten post edytował matrach 7.07.2006, 14:32:33 |
|
|
4.07.2006, 14:08:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
To nie ma nic wspolnego z Pro - patrzac na pytanie jakie zadajesz moge dac Ci jedna rade - daj sobie na luz.
-------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
4.07.2006, 14:29:59
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Skala projektu przerasta niejednego (w tym mnie). To co proponujesz to nie zabawa na 2 tygodnie, tylko na co najmniej 6 miesięcy i to kilkuosobowego zespołu. Przyłączam się do NuLLa - daj na wstrzymanie.
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
4.07.2006, 21:22:12
Post
#4
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 4 Dołączył: 22.01.2005 Ostrzeżenie: (0%) |
Ponieważ sam pisze gre internetową podpowiem Ci jak można rozwiązać pare kwestii:
Cytat C) Jak rozwiązać problem możliwych do budowy budynków, czy do posiadania itemów... Ponieważ w mojej grze nie ma itemów tak więc w tej kwestii raczej nic Ci nie podpowiem. Co do budynków u siebie mam tabelę buildins w której znajduje się kolumna userId i np. kopalnie, chatkiMysliwych itp. w nich znajduje się ilość danych budynków posiadanych przez danego gracza. Cytat C.Oraz jak zrobić do tego wymagania (kolejne kolumny?)? Według mnie to jest bez sensu, wymagania możesz zakodować na sztywno w php. Cytat D) Jak umieścić w tabeli posiadane budynki, czy itemy? Patrz to co napisałem na samym początku. Cytat E) Jak zrobić z np: z kopalnią która dodaje nam coś co sekunde? Co sekunde ? Według mnie to przesada, u mnie jest to co godzine. Jak ? Bardzo prosto: mam sobie tabelę resources i np. dwie kolumny: wegiel i wegielCoTure. Raz na godzinę robie sobie zapytanie(pisane z głowy dosyć prostę chociaż nie wiem czy jest dobre):
Jak masz więcej surowców to po prostu dodajesz sobie dalsze warunki. Cytat F) Jak wykonywać jakąś akcje w określonym czasie, niezależnie od aktywności użytkownika? U mnie znajduje się tabela w bazie danych o nazwie actions gdzie znajduje się nazwa akcji oraz kiedy ma się wykonać. Wg mnie są dwa wyjścia: 1. pętla wykonująca się w nieskończoność np.
2. Skrypt wywoływany cronem co np. 5 sekund który sprawdza czy akcja powinna się wykonać No i to chyba tyle. Polecam przeczytać ten temat: http://forum.php.pl/index.php?showtopic=30928 Pozdrawiam Ten post edytował Diwi 4.07.2006, 21:23:21 |
|
|
5.07.2006, 00:12:35
Post
#5
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) |
A do tworzenia wojsk przyda się na pewno wzorzec Composite (kompozycja)
http://devzone.zend.com/node/view/id/7 -------------------- |
|
|
6.07.2006, 15:45:04
Post
#6
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
1. pętla wykonująca się w nieskończoność np.
2. Skrypt wywoływany cronem co np. 5 sekund który sprawdza czy akcja powinna się wykonać Niezly sposob na zarzniecie maszyny @Matrach: popieram zdanie poprzednikow, jezeli masz takie problemy juz na etapie projektowania, to moze lepiej daruj sobie ten skrypt, napisz cos prostszego prosty CMS, lub Forum. postaram sie krotko odpowiedziec jak ja to widze: Ad. A) serializacja odpada, trzeba byc konsekwentnym, jesli trzymasz dane w bazie to trzymaj tam wszystkie (czyt. wiekszosc), ulatwi to m.in. wyszukiwanie Ad. B ) zalezy jakich umiejetnosci Ad. Ca) tak, kolumny w tabeli: np. id | budynek | wymagania_zlota | wymagania_drewna | wymagania_srebra Ad. D) ja bym to rozwiazal tak: tabela: budynki_uzytkownika id_uzytkownika | id_budynku | procent_budowy Ad. E) F) crona bym nie radzil uzywac w tym przypadku ilosc danych jakie kopalnia nam dala, nie musi byc dla nas znana co sekunde, wystarczy te dane obliczac w momencie zadania pokazania danej wartosci np. mamy kopalnie ktora daje nam 1 zloto co 5 sekund przed zamknieciem przegladarki mieliscmy powiedzmy 120 zlota po co mamy na darmo uruchamiac co 5 sekund zapytanie do bazy i aktualizowac dane, wystarczy w momencie wejscia uzytkownika do serwisu (np. po uplywie 2 godzin) obliczyc i wyswietlic aktualna ilosc zlota. w tym celu potrzebne bedzie zapisywanie daty wyjscia uzytkownika z serwisu, a nastepnie obliczenie czasu nieobecnosci usera (czas_powrotu-czas_wyjscia) podzielenie tego przez 5 (5 sekund, bo co tyle dostajemy 1 zlota) i aktualizacja zawartosci zlota w tabeli uzytkownika (120 zlota + obliczona wartosc) chyba to jest logiczne, ale nie w kazdym przypadku sie sprawdzi. Przypuscmy, ze budujemy jakas budowle, ktora ma zwiekszyc wydobycie zlota z 1 grudki na 2 grudki co 5 sekund. Wtedy w momencie zakonczenia budowy trzeba by uruchomic przez crona funkcje, ktora zwiekszy nam liczbe grudek wydobywanych przez dana kopalnie i zapisze czas w ktorym ta zmiana nastapila, lub jak kto woli nie trywialne rozwiazania - obliczyc to w momencie powrotu uzytkownika, ale konieczne bedzie uwzglednie tego momentu zmiany (zakonczenia budowy). Przyznam sie, ze nie pisalem nigdy gry internetowej, ale z powyzszych rozwiazan bym chyba korzystal. -------------------- |
|
|
6.07.2006, 15:57:24
Post
#7
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 4 Dołączył: 22.01.2005 Ostrzeżenie: (0%) |
Cytat Niezly sposob na zarzniecie maszyny smilingsmiley.gif To był tylko przykład, zdaje sobie sprawę że bardzo łatwo czymś takim "zabić" serwer . Chociaż jak narazie nie widzę innego rozwiązania. Pozdrawiam |
|
|
6.07.2006, 16:17:27
Post
#8
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) |
@Matrach: popieram zdanie poprzednikow, jezeli masz takie problemy juz na etapie projektowania, to moze lepiej daruj sobie ten skrypt, napisz cos prostszego prosty CMS, lub Forum. Czy ja mam tu jakieś problemy? Ja sie pytam czy znacie lepsze rozwiązanie od tech króre podałem w komentarzach. Co do E) i F) to znalazłem odpowiedz, przeliczanie będzie sie wykonywało w momencie interakcii z użytkownikiem. A serializacja tylko mi przeleciała przez myśl |
|
|
6.07.2006, 17:39:18
Post
#9
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
Mam wrazenie, ze 1 post byl postem w stylu, podrzuccie mi cala logike (czyt. Jak przechowywac rozne typy obiektow w bazie, jak zrobic to, jak zrobic tamto)
Mysle ze sam powinienes sie nad tym zastanowic i pisac dopiero z wlasna propozycja - tzn: Co myslicie nad tym, ze to i to rozwiaze w taki a taki sposob. Rowniez odnioslem wrazenie, ze nawet nie masz scenariusza napisanego - ale moge sie mylic Scenariusz przy grze to podstawa, bez tego nawet nie zaczynaj programowac, a nawet planowac. |
|
|
7.07.2006, 14:39:46
Post
#10
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) |
Mam wrazenie, ze 1 post byl postem w stylu, podrzuccie mi cala logike (czyt. Jak przechowywac rozne typy obiektow w bazie, jak zrobic to, jak zrobic tamto) Mysle ze sam powinienes sie nad tym zastanowic i pisac dopiero z wlasna propozycja - tzn: Co myslicie nad tym, ze to i to rozwiaze w taki a taki sposob. Teraz lepiej? Rowniez odnioslem wrazenie, ze nawet nie masz scenariusza napisanego - ale moge sie mylic Scenariusz przy grze to podstawa, bez tego nawet nie zaczynaj programowac, a nawet planowac. Odrazu widać Mam narazie ogólnokształt, wiem że podstawa, ale ja staram się najpierw wymyślić sposób, a potem jak to będzie wygladać. W przeciwnym wypadku, mogłoby sie okazać, że musze z czegoś zrezygnować, a jeśli z czegoś zrezygnuje to będe musiał i z czegoś innego zrezygnować itd. |
|
|
7.07.2006, 18:58:15
Post
#11
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) |
Skoro to już pro (a na taki raczej ten temat nie wygląda) to powinieneś wiedzieć że gre zaczyna sie pisać od scenariusza (tzn co ma być, jak ma funkcjinować) a dopiero potem sie planuje jak.
|
|
|
7.07.2006, 22:20:47
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
~Bora mylisz się moim zdaniem. Wg. Ciebie jeśli zmieni się scenariusz to ma się zmienic engine gry?
Nie, oczywiście że nie. Grę moim zdaniem zaczyna się pisać od stworzenia środowiska, oprogramowania, e.t.c. |
|
|
8.07.2006, 11:17:54
Post
#13
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) |
oj mike_mech, poczytaj artykuły na warsztacie ( http://regedit.gamedev.pl/warsztat/ ) jak się gry tworzy
-------------------- |
|
|
8.07.2006, 13:44:14
Post
#14
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) |
@mike_mech: Scenariusz gry nie obejmuje tylko historyjki jaką zobaczysz na stronie głównej przed zalogowaniem się. To także opcje programu, założenia, możliwości. Nie stworzysz engine-u gry nie mając tego w dobry sposób zaplanowane i rozpisane. Chyba że mowisz o engine-ie typu 'klasa dla bazy danych' i 'klasa dla szablonów' ale w takim razie z samą grą to ma tyle wspólnego co z każdą inną stroną napisaną w php.
@matrach: Wydaje mi się że musisz się nauczyć mierzyć siły na zamiary, poważnie. Już sam fakt, że chcesz umieszczać informacje typu możliwość wybudowania danego budynku i jego wymagania (może jeszcze opisy budynków?) w bazie danych świadczy o tym że jeszcze długa droga przed Tobą. Fajnie że chcesz podjąć jakieś wyzwanie, nauczyć się czegoś nowego w praktyce ale wierz mi że zaprojektowanie i zaprogramowanie gry nie jest wcale takie proste jak Ci sie wydaje. Pozdrawiam. Ten post edytował KG- 8.07.2006, 13:48:16 |
|
|
4.08.2006, 13:46:12
Post
#15
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 1 Dołączył: 3.12.2003 Skąd: W-wa Ostrzeżenie: (0%) |
Witam
Napisanie gry to duże wyzwanie i ciekawe. Ja bym uzył do tego oracla i cały engine na bazie i nie bawił bym sie w crony czy phpcli. A php zastosował bym tylko jako prezentacja. W sumie też w zależosci od tego jaka to by miała być gra jak turowa to może być w php jesli real time to raczej np. w C#. Bo jakoś js mnie nie przekonuje:D |
|
|
4.08.2006, 17:25:34
Post
#16
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) |
Jeżeli chodzi o pisanie gry to najlepiej wyglądałoby to w flashu jako prezentacja danych, łądnie podpiąć php do przesyłu danych, a jako baza to postgres lub mysql bo oracle to troche droga licencja.
|
|
|
5.08.2006, 13:21:48
Post
#17
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) |
Cytat W sumie też w zależosci od tego jaka to by miała być gra jak turowa to może być w php jesli real time to raczej np. w C#. Bo jakoś js mnie nie przekonuje:D Wydaje mi się że jemu chodziło o grę opartą o przeglądarkę, nie o klienta napisanego w C#. Po drugie gra może być pseudo-realtime, czyli może ci się tylko wydawać że toczy się w czasie rzeczywistym, w ten sposób działa kilka gier online opartych o przeglądarkę na naszym rynku. |
|
|
1.09.2006, 16:50:17
Post
#18
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 23.12.2003 Skąd: Radom Ostrzeżenie: (0%) |
Co do real time to tak naprawde real time nie moze to byc, bo to sa systemy oparte o jezyki skryptowe jak np php, a nie dzialajace w tle serwery tej gry, ktore ciagle cos robia, ale da sie to obejsc. Gracz rpzeciez nie widzi ciagle zmianiajacych sie wartosci surowcow itp, tylko dopiero jak przeladuje strone, wiec wtedy powinno byc wszystko przeliczane. Ewentualnie jesli tego gracza nie ma a ktos robic cos co ma wplyw na jego wojsko, surowce itp, to tez nalezaloby przeliczyc surowce itp. tego gracza.
Tworzenie tego typu gier to proces dosc zlozony, nie trzeba wbrew pozorom miec od razu calego planu, ale jakis zarys silnika musi byc aby to pozniej rozplanowac. Pozatym jak juz ktos napisal tego nie tworzy sie w tydzien, tylko to jest kilka miesiecy zmudnej pracy (min 2 aby zrobic jakis poczatkowy silnik), tym bardziej ze sama gra zazwyczaj sie zmienia wedlug sugestii pierwszych graczy. A co do pierwszego posta to nie licz na to, ze ktos Ci zaprojektuje ja za Ciebie, jak chcesz cos takiego stworzyc to musisz sie sam wziasc za to, wiekszosc tego typu projektow pada po jakims czasie, bo nie ma kto nad tym pracowac. A i nie trzeba wbrew pozorom wielkiej ekipy ludzi do tego, wystarczy jeden programista i jakis grafik i juz sobie poradza. -------------------- pozdrawiam,
Jakub Korupczyński |
|
|
5.09.2006, 04:13:52
Post
#19
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 21.04.2003 Ostrzeżenie: (0%) |
Skoro to już pro (a na taki raczej ten temat nie wygląda) to powinieneś wiedzieć że gre zaczyna sie pisać od scenariusza (tzn co ma być, jak ma funkcjinować) a dopiero potem sie planuje jak. a co powiesz o FarCry i Crytek?? przeciez najpierw był engine a dopiero później żeby go sprzedawać napisali do niego grę. A co powiesz o engine najnowszego Unreal Tournament? gra wydaje się być także jedynie prezentacją ponieważ engine pozwala stworzyć FPS, RTS, RPG (? - jak ja nienawidze tej nazwy), Przygodówkę, Bilarda... i co tylko sobie zapragniesz. Chodzą nawet pogłoski że na engine UT można zrobić system operacyjny Jeżeli chodzi i temat to zgadzam się jednak z przedmówcami... mimo iż nie masz scenariusza i tak powienieneś zdać sobie szybciutko sprawę, że to co stworzysz teraz będzie na pewno niegrywalne i po skończeniu albo jeszcze przed porzucisz projekt. Aczkolwiek jako trening możesz to zastosować (polecał bym jednak księgę gości, forum, moze nawet galerie z zastosowaniem drzewek i obsługa modelowania miniaturek) Tutaj jest więcej problemów do rozwiązania i to na wcześniejszym etapie (planowanie, projektowanie ?) niż ten, od którego zacząłeś. Konkludując - nie spodziewaj się zbyt wiele, a najlepiej nie spodziewaj się niczego... tzn niczego to akurat mozesz się spodziewać -------------------- Untertainment - www.ut.info.pl mój wkład w Unreal Tournament i CMS.
Zainteresowania: Teaching snakes to kick. |
|
|
5.09.2006, 10:02:09
Post
#20
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
@Pianandrill: no ok, ale zauwaz ze takie enginy to kobyly ktore wszystko sa w stanie zrobic... Tak? Sam napisales od fpp po strategie, a nawet bilard... Jak chcesz napisac sobie gre sam, z kumplami, nie majac enginu, to Robisz najpierw scenariusz zeby wiedziec czego potrzebowac do pisania, z jakiego jezyka skorzystac, jak ma sie grac via www, czy tez aplikacja okienkowa, czy po prostu gra w c# + directX. To wszystko okresla scenariusz. A pozniej siadacie do kodowania i wiecie co kodowac czego nie.
Mowisz Ze w FarCry i Crytek najpierw byl engine. A ja powiem, ze napewno ten engine kreowal sie z czasem, napisali jedna gre, pozniej druga, pozniej kolejna. Mieli doswiadczenie i wiedzieli jak zrobic super engine ktory pociagnie jeszcze wiecej. I napisali engine, na ktorym pozniej stworzyli gre... Jesli zazcynasz od 0, to nie piszesz enginu, tylko scenariusz. Majac scenariusz zastanawiasz sie jak to napisac. Taka jest kolej rzeczy. Mozna na odwrot, ale po co rzucac sobie klody pod nogi? To jest tak jak z tworzeniem stron. Chcesz zrobic portal, nie majac doswiadczenia - najpierw okreslasz co chcesz osiagnac, a pozniej realizujesz ten cel jakimis srodkami. Pisanie portalu bez wiedzy bez wyobrazni jak ma wygladac, karze ciebie na porazke. |
|
|
Wersja Lo-Fi | Aktualny czas: 24.09.2024 - 18:02 |