Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Gra internetowa, sposoby, optymalność, rozszerzalność
matrach
post 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 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

Ten post edytował matrach 7.07.2006, 14:32:33
Go to the top of the page
+Quote Post
NuLL
post 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 :)
Go to the top of the page
+Quote Post
Cysiaczek
post 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.
Go to the top of the page
+Quote Post
Diwi
post 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):

  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

Ten post edytował Diwi 4.07.2006, 21:23:21
Go to the top of the page
+Quote Post
Vengeance
post 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


--------------------
Go to the top of the page
+Quote Post
wojto
post 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%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Diwi
post 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 biggrin.gif. Chociaż jak narazie nie widzę innego rozwiązania.

Pozdrawiam
Go to the top of the page
+Quote Post
matrach
post 6.07.2006, 16:17:27
Post #8





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 17.04.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Ace
post 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 winksmiley.jpg Scenariusz przy grze to podstawa, bez tego nawet nie zaczynaj programowac, a nawet planowac.
Go to the top of the page
+Quote Post
matrach
post 7.07.2006, 14:39:46
Post #10





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 17.04.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Bora
post 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.
Go to the top of the page
+Quote Post
mike
post 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.
Go to the top of the page
+Quote Post
bela
post 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 winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
KG-
post 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
Go to the top of the page
+Quote Post
none
post 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
Go to the top of the page
+Quote Post
Bora
post 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.
Go to the top of the page
+Quote Post
KG-
post 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.
Go to the top of the page
+Quote Post
Cobretti
post 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
Go to the top of the page
+Quote Post
Pianandrill
post 5.09.2006, 04:13:52
Post #19





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 21.04.2003

Ostrzeżenie: (0%)
-----


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


--------------------
Untertainment - www.ut.info.pl mój wkład w Unreal Tournament i CMS.
Zainteresowania: Teaching snakes to kick.
Go to the top of the page
+Quote Post
Ace
post 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.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 14:14