Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Archiwum Pro _ Gra internetowa

Napisany przez: matrach 4.07.2006, 14:06:10

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 tongue.gif
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 tongue.gif.

Z góry dzięki za odpowiedzi

Napisany przez: NuLL 4.07.2006, 14:08:21

To nie ma nic wspolnego z Pro - patrzac na pytanie jakie zadajesz moge dac Ci jedna rade - daj sobie na luz.

Napisany przez: Cysiaczek 4.07.2006, 14:29:59

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.

Napisany przez: Diwi 4.07.2006, 21:22:12

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):

  1. UPDATE `resources` SET `wegiel`=`wegiel`+`wegielCoTure`


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.
  1. <?php
  2. while(1) {
  3. // i tutaj jeżeli czas wykonania danego przebiegu pętli jest większy od czasu akcj
    i to wykonujemy akcję.
  4. }
  5. ?>


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

Napisany przez: Vengeance 5.07.2006, 00:12:35

A do tworzenia wojsk przyda się na pewno wzorzec Composite (kompozycja)
http://devzone.zend.com/node/view/id/7

Napisany przez: wojto 6.07.2006, 15:45:04

Cytat(Diwi @ 4.07.2006, 22:22 ) *
1. pętla wykonująca się w nieskończoność np.
  1. <?php
  2. while(1) {
  3. // i tutaj jeżeli czas wykonania danego przebiegu pętli jest większy od czasu akcj
    i to wykonujemy akcję.
  4. }
  5. ?>


2. Skrypt wywoływany cronem co np. 5 sekund który sprawdza czy akcja powinna się wykonać

Niezly sposob na zarzniecie maszyny smile.gif

@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.

Napisany przez: Diwi 6.07.2006, 15:57:24

Cytat
Niezly sposob na zarzniecie maszyny smilingsmiley.gif


To był tylko przykład, zdaje sobie sprawę że bardzo łatwo czymś takim "zabić" serwer biggrin.gif. Chociaż jak narazie nie widzę innego rozwiązania.

Pozdrawiam

Napisany przez: matrach 6.07.2006, 16:17:27

Cytat(wojto @ 6.07.2006, 16:45 ) *
@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. smile.gif

Co do E) i F) to znalazłem odpowiedz, przeliczanie będzie sie wykonywało w momencie interakcii z użytkownikiem. smile.gif A serializacja tylko mi przeleciała przez myśl tongue.gif

Napisany przez: Ace 6.07.2006, 17:39:18

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 winksmiley.jpg Scenariusz przy grze to podstawa, bez tego nawet nie zaczynaj programowac, a nawet planowac.

Napisany przez: matrach 7.07.2006, 14:39:46

Cytat(Ace @ 6.07.2006, 18:39 ) *
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?
Cytat(Ace @ 6.07.2006, 18:39 ) *
Rowniez odnioslem wrazenie, ze nawet nie masz scenariusza napisanego - ale moge sie mylic winksmiley.jpg Scenariusz przy grze to podstawa, bez tego nawet nie zaczynaj programowac, a nawet planowac.

Odrazu widać tongue.gif 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.

Napisany przez: Bora 7.07.2006, 18:58:15

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.

Napisany przez: mike_mech 7.07.2006, 22:20:47

~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.

Napisany przez: bela_666 8.07.2006, 11:17:54

oj mike_mech, poczytaj artykuły na warsztacie ( http://regedit.gamedev.pl/warsztat/ ) jak się gry tworzy winksmiley.jpg

Napisany przez: KG- 8.07.2006, 13:44:14

@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.

Napisany przez: none 4.08.2006, 13:46:12

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

Napisany przez: Bora 4.08.2006, 17:25:34

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.

Napisany przez: KG- 5.08.2006, 13:21:48

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.

Napisany przez: Cobretti 1.09.2006, 16:50:17

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.

Napisany przez: Pianandrill 5.09.2006, 04:13:52

Cytat(Bora @ 7.07.2006, 19:58:15 ) *
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 biggrin.gif

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ć biggrin.gif

Napisany przez: Ace 5.09.2006, 10:02:09

@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.

Napisany przez: KG- 6.09.2006, 09:47:37

Pianandrill
Ja również się nie zgodzę z kwestią engine-u. Inny engine będzie miała gra handlowa, inny gra rpg a jeszcze inny np scrabble. Chyba że mówisz o engine typu obsługa bazy, szablonów, system wiadomości, ale to, jak już pisałem wcześniej, ma tyle wspólnego z samą grą co każda inna strona pisana w php winksmiley.jpg
Innymi słowy - jeśli chcesz coś napisać to musisz wiedzieć co to będzie. Poczynić pewne założenia, cele i do tego dążyć. Inaczej wyjdzie niewiadomo co, lub porzucisz projekt w połowie.

Oczywiście potem taki silnik możesz rozbudować, stworzyć modyfikacje na jego podstawie, wykorzystać pewne jego części do modyfikacji gry itd. Ale pierwotna wersja powinna powstać na bazie czegoś ustalonego.

Napisany przez: Cobretti 6.10.2006, 22:58:20

Tak, najpierw scenariusz, pozniej engine, a w rzeczywistosci konczy sie wszystko tym, ze masz niby scenariusz, system jakis walki opracowany mniej wiecej do gry, a jak zaczynasz to pisac to wychodzi na to ze od strony programowania ten system walki jest bez sensu i wprowadzasz w nim kolejne zmiany smile.gif


Pozniej osoby testujace gre mowia Ci ze ten system jest zupelnie bez sensu i sa kolejne zmiany.smile.gif

Napisany przez: Turgon 7.10.2006, 08:48:39

Powiem tak, pisać będę grę w najbliższym czasie i powiem ci szczerze. Najpierw solidny scenariusz, a potem tylko ciągłe naprawianie i poprawianie. To niekończąca się droga.
Po co ci po za tym silnik ? Wystarczy Framework i trochę chęci smile.gif

Napisany przez: raikou 7.10.2006, 09:09:19

W sumie to gra sieciowa dla przeglądarki opiera się głównie na założeniach nie na silniku. Jeśli dobrze sobie wszystko obmyślisz, rozpiszesz, wymyślisz wzory na których to będzie działało, to napisanie tego nie będzie raczej problemem, niezależnie czy strukturalnie czy obiektowo.

Kwestią problematyczną może być obciążenie maszyny, skrypt naprawde powinien być jak najszybszy i możliwie najmniej bolesny dla dostępnych zasobów.

Napisany przez: Turgon 7.10.2006, 10:17:18

To wszystko wiąże się z armią betatesterów, którzy będą męczyć grę etc. tak, żeby sprawdzić ją.
Dlatego prosty Plan:
1. Scenariusz.
a) fabuła
cool.gif gry
2. Kod.
a) engine
cool.gif otoczka
3. Wygląd.
4. Betatestowanie.
a) jeśli coś nie pasuje przerabiamy efekt 2. cool.gif
cool.gif jak wszystko okej - publikacja
5. Użytkowanie.
a) ciągły powrót do etapu 4.

Napisany przez: Fuzja 7.10.2006, 19:55:01

Zaprzeczasz Turgon sam sobie, raz piszesz, że silnik nie potrzebny, a potem w punkcie 2. wpisujesz go.

Napisany przez: Ociu 8.10.2006, 07:45:14

Cytat(Turgon @ 7.10.2006, 09:48:39 ) *
Po co ci po za tym silnik ? Wystarczy Framework i trochę chęci smile.gif


Wiesz o czym Ty piszesz ? Przecież framework to tak naprawde silnik.

Poza tym Twój plan jest tak ogólnikowy, jak to, że atomy istnieją. Nie jest powiedziane jak to wszystko współpracuje, co ma być w środku jądra, a co będzie tylko addonsem.

Napisany przez: Turgon 8.10.2006, 09:43:05

Ociu jak chcesz... Ja w tej chwilę kończę dopisywać konfiguracje do FrameWorka winksmiley.jpg . Potem jak skończę Bloga, to napiszę o tym notkę smile.gif

Napisany przez: Cobretti 8.10.2006, 10:41:51

Cytat(raikou @ 7.10.2006, 10:09:19 ) *
W sumie to gra sieciowa dla przeglądarki opiera się głównie na założeniach nie na silniku. Jeśli dobrze sobie wszystko obmyślisz, rozpiszesz, wymyślisz wzory na których to będzie działało, to napisanie tego nie będzie raczej problemem, niezależnie czy strukturalnie czy obiektowo.

Kwestią problematyczną może być obciążenie maszyny, skrypt naprawde powinien być jak najszybszy i możliwie najmniej bolesny dla dostępnych zasobów.


I dlatego raczej pisze sie strukturalnie. W tego typu projekcie uzytkownik bardzo dlugo jest zalogowany, duzo klika, a wiec dosc czesto silnik gry musi przeliczyc dla danego gracza jakies dane. Oszczedza sie na wszystkim, wlacznie z grafika, ktora powinna byc ladna, ale zarazem jak najmniej obciazac system.
Mozna tez dodac mozliwosc czytania grafiki z dysku, co duzo transferu moze oszczedzic jesli gracze zaczna tego uzywac.

A i nikt nie napisal smile.gif Im bardziej popularna gra tym wiecej nerwow stracisz w rozmowach z graczami, tym czesciej jacys beda Cie oskarzali o oszustwa, pomaganie coniektorym graczom itp. Do tego tez sie trzeba przyzwyczaic smile.gif

Napisany przez: SHiP 12.10.2006, 20:00:59

Myśle ze problem obiektowo - strukturalnie nie ma duzego znaczenia, to są naprawde cyfry po 8 miejscu po przecinku. Kiedyś pisałem taką gre i to rpg ;] i przyznam ze ciekawym elementem moze być silnik w ajaxie. W mojej grze gracz pobieral tylko co klikniecie małe pakieciki zawierające jakies dane potrzebne do wyswietnienia danej opcji.

Napisany przez: D4rky 21.10.2006, 20:16:28

Cóż, ja sam w tej chwili piszę ogólnodostępny silnik do gry (rpgc0re). Może nie jest superpr0, nie 1337uje itp, ale na pewno jest lepszy od tego syfu, co teraz można ściagnąć (np Vallheru, GF2.5 itp). Porównywałem prędkościowo z Vallheru samo logowanie, i wyszło, że mój skrypt robi to 6x szybciej, ale to też kwestia mniejszej ilości kodu na głównej ;>

Napisany przez: TrAvIkK 23.11.2006, 10:22:32

Jeżeli projekt aktualny...

Wymagania co do budynków zrobić w php...
Większej głupoty nie słyszałem.

Jeżeli będizesz chciał coś zmienić, to będziesz musiał przegrzebać pół kodu w odnalezieniu jednej linijki. Przy tym powstaną bugi, przypadek - X-Wars.

Najlepiej zapisać wszystkie wymagania w bazie. Baza to potęga.
Mozna zmienić wymagania jednym kliknięciem, i nic się nie wysypie.

Cytat
A) Jakbyście zapisali ustawienia użytkownika typu np: avatar, czy domyślne ustawienia wojska?


Do danych użytkownika proponuje 2 tabele.
  1. Tutaj będą dane dot. konta, np. login, alias, hasło, email...
  2. Dane wymienione w cytacie

Cytat
B ) Umieszczanie możliwych do budowy budynków, posiadania wojska?

Do każdego typu "rzeczy" zrób osobną tabelę.

Cytat
B.a)Oraz do tego wymagania?

Wymagania zrób tak jak napisałem wyżej

Cytat
C) Umieszczanie w tabeli posiadane

Zdecydowanie nowa tabela

Cytat
b ) wojsko
Czy optymalne jest umieszczanie każdej jednostki w nowym wierszu?

Ale jak rozumiesz każdej jednostki ?

Cytat
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 tongue.gif


Zdecydowanie tak, mało optymalne...
Najlepiej zrobić tabelę "klików"...
Umieszczasz w niej czas ostatniego kliknięcia, i potem od aktualnego czasu odlicas ów czas, i obliczasz wg. ustalonego wzoru ile surowców powinno przybyć.
Takie obliczenia będa przy każdej akcji - wybudowanie budynku, atak na Twoją planetę itp...


Sam pracuje nad grą, wraz ze znajomym. Minął miesiąc a ja nauczyłem się tyle, jak nigdy, więc nie zabieraj się do robienia, tylko rób!

Napisany przez: KG- 21.12.2006, 16:32:45

Cytat
Wymagania co do budynków zrobić w php...
Większej głupoty nie słyszałem.

Jeżeli będizesz chciał coś zmienić, to będziesz musiał przegrzebać pół kodu w odnalezieniu jednej linijki. Przy tym powstaną bugi, przypadek - X-Wars.

Najlepiej zapisać wszystkie wymagania w bazie. Baza to potęga.
Mozna zmienić wymagania jednym kliknięciem, i nic się nie wysypie.

Widzisz, różnica między nami polega na tym, że ja napisałem taką grę oraz mam w tym doświadczenie praktyczne również od strony administracji serwerem na którym stoi, Ty dopiero piszesz i uczysz się, a jednak wyśmiewasz to co powinno być właśnie w ten sposób zrobione.

Więc tak:
1) jeśli dobrze napiszesz kod, to zmiana czegokolwiek będzie polegała na prostej zmianie jednej liczby w jednym miejscu. Jeśli dodatkowo dobrze to zaplanujesz i pomyślisz to znalezienie miejsca do zmiany będzie kwestią 1-5 sekund. Chyba mi nie powiesz że zmieniając jedną liczbę spowodujesz bugi w kodzie winksmiley.jpg
2) jeśli już napiszesz tę grę w taki sposób jak piszesz i wpuścisz na nią kilka tysięcy graczy którzy będą klikali w miarę często, to szybko zauważysz że mysql zabierze ci 90% procka, będzie się wieszał w trakcie zapytań a wszelkie lagi, spowolnienia i błędy będą wynikały właśnie w tego. Baza to potęga, ale jeśli się jej źle używa to szybko słabnie winksmiley.jpg

Rozwiązaniem jest tutaj zastosowanie cache-u zapytań (który i tak będziesz musiał zastosować, inaczej nie wyrobisz nawet na Dual Opteronie z 4gb ramu; polecam do tego celu memcache), jednak wtedy po każdej zmianie będziesz musiał wyczyścić cache. Natomiast umieszczenie takich rzeczy w plikach sprawi że mając np. eacceleratora, xcache albo apc, pliki te będą prekompilowane i cache-owane automatycznie przez serwer.

Generalnie jak będziesz miał duży ruch, to będziesz kombinował jak ograniczyć ilość zapytań i jak najmniej korzystać z bazy, będziesz się zastanawiał nad każdym zapytaniem, strukturą bazy, jak to zrobić żeby było wydajniej, szybciej i mniej obciążało serwer. A Ty chcesz jeszcze dokładać bazie dodatkowe tabele i zapytania, na dodatek takie które są całkowicie zbędne.

Do tego dochodzi np sytuacja w której mając kilka serwerów będziesz chciał zmienić coś na wszystkich. W Twoim przypadku musisz się łączyć z każdą bazą i wykonywać zapytania, w przypadku plików po prostu używasz subversiona, który możesz zautomatyzować do tego stopnia że jednym kliknięciem będziesz aktualizował pliki nawet na 500 serwerach jednocześnie.

Pozdrawiam, powodzenia i życzę Wesołych Świąt winksmiley.jpg

PS. Jak zrobisz tą grę to podeślij linka na PW, chętnie zobaczę, z góry dzięki smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)