Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Gra internetowa w php
Modgar
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 27.05.2005

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


Serdecznie witam wszystkich forumowiczów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Chciałbym napisać gre internetowa taka jak np.Ogame jestem srednim programistą interesujacy się php dlatego chciałbym się troche pobawić w stworzenie gry o podobnych zasadach.I tu z mojej strony wielka prosba czy sa jakies artykuły lub strony internetowe poswiecone programowaniu takich gier internetowych jakies kursy lub tutoriale moze ktos z was bedzie chetny pomogac mi bardzo prosze o pomoc.

Aha i jeszcze jedno czy do napisania takiej gry wystarczy tylko jezyk php czy moze jakies inne jeszcze ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Sprawa akcji nie jest wcale taka trudna, jak mogło by się wydawać...

Wystarczy jedna tabela z kolejką akcji, w której zapisujemy:
1. Akcja do wykonania - tutaj jest problem z identyfikacją różnych akcji - zwykły licznik to trochę za mało przy dużej ilości akcji.
2. Identyfikator użytkownika, który wykonuje akcję.
3. Moment, w którym akcja powinna być wykonana.

Kiedy potrzebujemy danych użytkownika (w celu odbycia walki, szpiegowania etc.) wybieramy akcje wszystkich użytkowników, których informacje muszą być uaktualnione. Przetwarzamy je po kolei zgodnie z czasem wykonania.

Wcale nie trzeba w kółko przetwarzać całej kolejki. Pozostaje kwestia odśmiecania kolejki. Gracz, który przez miesiąc nie będzie grał nazbiera 1000 akcji, a kiedy będziemy chcieli podglądnąć stan jego konta trzeba obliczyć wszystko po kolei. Dobrym rozwiązaniem byłby jakiś prosty skrypt przetwarzający akcje uruchamiany przez crona na przykład co godzinę.

Drugie podejście...

Mamy już serwer gry (php w tym przypadku odpada). Nie musimy nic zapisywać w bazie, wystarczy na serwerze utworzyć kolejkę z akcjami. Obiekty akcji użytkownika nazwiemy UserAction. Interfejs wygląda mniej więcej tak:
Kod
int getTime(); // Zwraca znacznik czasu wskazujący na moment wykonania akcji.
void call(); // Wywołuje akcję

W momencie, w którym użytkownik żąda wywołania akcji obliczamy czas, w którym ma być wykonana i tworzymy obiekt akcji. Dodajemy akcję na koniec kolejki. Do przetwarzania potrzebujemy:
- Timera (czas aktualizacji to dokładność znacznika czasu, najczęściej 1s)
- Licznika, w którym zapiszemy ile sekund pozostało do wykonania pierwszej akcji w kolejce. Tak będzie szybciej niż pobierając za każdym razem czas z obiektu.
Zapisując to krokowo:
-- Ładowanie akcji --
1. Pobieramy znacznik czasu z pierwszego obiektu w kolejce.
2. Obliczamy różnicę: czas akcji - czas obecny. Zapisujemy wynik w liczniku.
-- Pętla licznika --
3. Sprawdzamy czy licznik nie jest niedodatni (może się tak zdarzyć, kiedy poprzednia akcja będzie wykonywana dłużej lub tyle samo co przerwa pomiędzy nią a następną). Jeżeli jest, wtedy przechodzimy do punktu 5.
4. Odejmujemy 1 od licznika, przechodzimy do punktu 3.
-- Wykonywanie akcji --
5. Wywołujemy akcję.
6. Gdy wykonanie akcji jest zakończone sukcesem, wtedy usuwamy pierwszy element kolejki (wykonaną akcję) i przechodzimy do punktu 1.

Wydaje mi się, że jest to w miarę wydajny sposób na wykonanie sekwencji akcji w czasie rzeczywistym. Timer nie pochłania zbyt dużej mocy obliczeniowej procesora. Jałowe przebiegi pętli licznika to tylko jedna instrukcja odejmowania i jedno porównanie, wykonywane w dosyć dużych odstępach czasu w porównaniu do złożoności obliczeń. Kolejka jest w tym wypadku bardzo wydajną strukturą, gdyż interesują nas tylko odwołania do pierwszego i ostatniego obiektu. Kolejne obiekty wiążemy w łańcuch przy pomocy referencji. Nie ma problemu z alokacją pamięci.

Wybór techniki zależy od wielu czynników... Mam nadzieję, że napisałem to jasno...
Go to the top of the page
+Quote Post

Posty w temacie
- Modgar   Gra internetowa w php   27.05.2005, 15:19:20
- - FiDO   Przenosze na php   27.05.2005, 18:46:34
- - Rastman   CytatAha i jeszcze jedno czy do napisania takiej g...   27.05.2005, 18:57:19
- - hwao   Wiec. Napewno bedzie Ci potrzbene php nastepnie p...   27.05.2005, 19:47:47
- - DeyV   Przy tworzeniu tego typu aplikacji znacznie ważnie...   27.05.2005, 19:48:03
- - Imperior   Miej na uwadze, że OGame potrzebuje solidnej bazy ...   28.05.2005, 08:05:24
- - pmalirz   moim zdaniem... trzeba to oprzeć na klasach, jest ...   28.05.2005, 10:29:41
- - M4chu   Cytat(pmalirz @ 2005-05-28 11:29:41)Powinna o...   28.05.2005, 13:41:24
- - Speedy   Jeśli chodzi Ci o jakąś konkretną książkę, to jaki...   28.05.2005, 17:30:39
- - Imperior   Heh... jak patrze na spis treści, to widze koło 14...   30.05.2005, 16:38:16
- - slepy   Sam gram w Ogame i mocno się zastanawiałem jak ta ...   30.05.2005, 16:57:18
- - Speedy   Cytat(Imperior @ 2005-05-30 15:38:16)Heh... j...   30.05.2005, 17:19:57
- - Imperior   Cytat(Speedy @ 2005-05-30 16:19:57)A czy ja p...   30.05.2005, 18:27:21
- - slepy   Zatem moje wniosko mogą być suszne.. Rozwinięcie t...   30.05.2005, 20:14:22
- - squid   a co myslicie o wprawadzeniu wzorca MVC do pracy p...   30.05.2005, 22:09:36
- - vala   jak na moje oko to to jest zrobione na podstawie b...   31.05.2005, 05:22:53
- - slepy   Co to P.Sów jestem za;p Ale wierz mi jak 1000 osó...   31.05.2005, 07:17:40
- - vegelus   Witam wszystkich na forum :-) Od niedawna czytam ...   31.05.2005, 08:26:37
- - xarr   Tez zaczolem pisac rpga na php+mysql+js jakis czas...   31.05.2005, 10:05:07
- - vegelus   w zamysle miala byc gra jednoosobowa ale ekipa sie...   31.05.2005, 16:32:02
- - Imperior   Zachwycając się Ogame... znacie X-wars? (Ta sama f...   31.05.2005, 16:37:57
- - Kinool   hehe fakt temat bardzo ciekawy wydaje mi sie ze p...   1.06.2005, 20:18:31
- - tarlandil   Dlaczego sadzicie, ze serwer musi wykonac obliczen...   1.06.2005, 23:11:08
- - rogrog   Cytat(tarlandil @ 2005-06-02 00:11:08)Dlaczeg...   2.06.2005, 13:31:09
- - tarlandil   rogrog, jakos nie widze aby Twoj pomysl roznicl si...   2.06.2005, 17:43:49
- - SongoQ   Za wiekszosc czynnosci jest odpowiedzialna baza da...   2.06.2005, 18:16:30
- - vegelus   Ja zauwazylem jedna wlasciwosc :-) Jak konczy sie...   2.06.2005, 18:51:09
- - tarlandil   Co do naliczania surowcow w ogame to wstarczy spoj...   2.06.2005, 22:12:53
- - vegelus   mnie bardziej nurtuje co robic jak jeden oleje a d...   3.06.2005, 08:57:49
- - Marcin_m   Możesz to zrobić na dwa sposoby. I. 1. Ustalasz k...   3.06.2005, 09:18:57
- - php programmer   do hwao: dlaczego odradzasz bawienia sie na plika...   3.06.2005, 09:26:05
- - tarlandil   Ja widze 2 rozwiazania (mowiles o nich tylko zbior...   3.06.2005, 09:26:22
- - rogrog   Cytat(tarlandil @ 2005-06-02 18:43:49)rogrog,...   3.06.2005, 17:26:51
- - vala   hmm biorac pod uwage triggery czyli o ile rozumiem...   3.06.2005, 20:46:03
- - vegelus   Dobrym pomyslem jest uzupelnienie strony o JS i w ...   3.06.2005, 21:45:56
- - ActivePlayer   Cytatdlaczego odradzasz bawienia sie na plikach? p...   4.06.2005, 13:06:08
- - drs   elo ja tesh sobie robie gre w php i ma takie pytan...   7.06.2005, 17:08:13
- - SongoQ   Cytatdlaczego odradzasz bawienia sie na plikach? p...   7.06.2005, 21:47:10
- - drs   racja db to podstawa ja robie na db jest wygodniej...   7.06.2005, 22:10:31
- - SongoQ   NIe tyle jest wygodniej co zapominasz o mechanizma...   7.06.2005, 22:14:22
- - vegelus   no i jeszcze mozna dodac ze w bazie lepiej cos prz...   7.06.2005, 22:31:40
- - bear007   Czesc! W takich grach jak Ogame nie ma czasu,...   10.06.2005, 20:01:18
- - NetJaro   A tak na prawdę nikt nie wiem jak to jest w OGame,...   19.01.2006, 00:15:57
- - bear007   Cytat(NetJaro @ 2006-01-18 23:15:57)A tak na ...   19.01.2006, 00:24:34
- - Speedy   Wspomnę jeszcze o tej książce, do której podałem w...   19.01.2006, 18:44:50
- - invx   za namowa forumowicza, kontunuuje temat jesli kto...   22.01.2006, 20:40:41
- - NetJaro   Speedy, mam ta ksiazke - kupilem. Troche malo opis...   22.01.2006, 20:58:04
- - squid   Zastanawia mnie sens pisania gry w php. Skrypt php...   22.01.2006, 21:11:20
- - eMartio   Kiedyś stworzyłem grę w php 4 pisząc ją struktural...   24.01.2006, 15:54:56
- - squid   Cytat(eMartio @ 2006-01-24 16:54:56)Jest kilk...   24.01.2006, 16:01:58
- - eMartio   Szkoda, że w php jesteśmy skazani na sesje, gdyż w...   24.01.2006, 16:12:28
- - NetJaro   Hmm.. co to jest "keszowanie zapytan" - ...   24.01.2006, 16:38:51
- - squid   Cytat(eMartio @ 2006-01-24 17:12:28)Szkoda, ż...   24.01.2006, 17:20:33
- - Martio_L   Cytat(NetJaro @ 2006-01-24 15:38:51)Hmm.. co ...   24.01.2006, 22:06:20
- - Diwi   Mam pytanko wiem że parenaście postów wcześniej by...   24.01.2006, 22:08:37
- - bigZbig   Cytat(eMartio @ 2006-01-24 17:12:28)Jedno, co...   25.01.2006, 10:08:52
- - Ludvik   Sprawa akcji nie jest wcale taka trudna, jak mogło...   25.01.2006, 19:46:56
- - Vogel   Cytat(Ludvik @ 2006-01-25 20:46:56)Mamy już s...   25.01.2006, 22:38:25
- - R-T   chciałbym przypomniec pierwsze pytanie odnosnie ku...   11.08.2006, 10:43:46
- - osin   chcialem zapytac czy jest na tym forum temat o rob...   19.01.2007, 19:21:24
- - verio   Hmmm...... Skoro już poruszylście ten temat, to mo...   23.01.2007, 08:39:39
- - My4tic   Ehh... http://www.google.pl/search?q=timer+javasc...   23.01.2007, 09:23:24
- - neversoft   Zainteresował mnie ten temat. Mam pytanie co do np...   29.01.2007, 19:30:03
- - dethim   ja też mam zamiar napisać taką gre...bedzie to poł...   11.02.2007, 17:47:05
- - radex_p   ale żeś odkrył Amerykę, dethim -------- post nie...   11.02.2007, 18:28:55
- - R4D3K   Co do kursów i nauki najlepszą nauką jest praktyka...   3.08.2007, 20:12:32
- - slepiec   witam wszystkich. Jestem slepiec, nieco doświadczo...   23.08.2007, 18:35:57
- - Luke_Star   Travian wygląda lepiej Ja w swojej grze załatwiłe...   23.08.2007, 18:50:49
- - slepiec   Luck : a po co ci Cron ? jak user się loguje (czy ...   23.08.2007, 22:24:57
- - Luke_Star   slepiec tylko ze cron jest uzywany wtedy dy trzeba...   23.08.2007, 22:33:43
- - kula   Co to akcji w czasie w grach typu ogame: WG mnie ...   17.09.2007, 03:14:09
- - radex_p   odkopywanie starych tematów jest nielubianą prakty...   17.09.2007, 07:11:15
- - omegan   witam skoro jest tu mowa o grach w php to przyzna...   12.12.2007, 16:36:51
- - colinQ   to zależy co masz w tej grze... Jeśli masz np. br...   12.12.2007, 17:19:55
- - Rufus009   Nagle wszyscy chcą napisać własną grę online ... ...   12.12.2007, 18:45:12
- - colinQ   Ja też Już kilka procent mam ; Tematyka: II Wojn...   12.12.2007, 22:21:57
- - Rosiv   Witam chciałbym odświeżyć trochę ten wątek. Propon...   5.10.2008, 13:43:37


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

 



RSS Aktualny czas: 4.10.2025 - 09:36