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 ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%)
|
Przenosze na php
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 6.06.2004 Ostrzeżenie: (20%)
|
Cytat Aha i jeszcze jedno czy do napisania takiej gry wystarczy tylko jezyk php czy moze jakies inne jeszcze ? to zależy, czy przy każdym kroku gracza ma się odswierzać strona, czy nie. jeśli nie to musisz skorzystać z JS, lub Flasha, bo php jak wiadomo działa po stronie serwera |
|
|
|
Post
#4
|
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz |
Wiec.
Napewno bedzie Ci potrzbene php (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) nastepnie przydalal by sie jakas baza danych - znacznie ulatwi to Ci prace. Nastepnie powinnienes znac html (xhtml) css ( strona wizulana), ale do udogodnien mozesz zaprzedz javaScript. Do prezentacji jakis danych czasem moze sie okazac lepszy dynamkiczyn flash (+php - wyciaganie np danych z bazy danych). Bazy danych, populatna zwazajac na jej prostote MySQL, chyba ze masz PHP5 to mozesz takze uzyc SQlite. Odradzam bawienia sie na plikach. Jak trzeban znac php: Wiec to roznie, bo nie da sie do konca okreslic na jakim poziomie zaawansowania sie jest. Najwygodniej bylo by pisac to na klasach, poniewaz - szczelnosc - edycja, latwiejsza - pozadek - podzielenie na "akcje" Proponowal bym popatrzec troche po forum, poniewaz pare razy byl taki temat z cyklu towrzenie gry w php. |
|
|
|
Post
#5
|
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław |
Przy tworzeniu tego typu aplikacji znacznie ważniejsze jest skupienie się na zasadach gry, niż na ich oprogramowaniu.
A przykład Ogame, i np. ilość i komplikacja wzorów matematycznych pozwalajacych na prowadzenie rozgrywki, pokazuje, że zadanie to nie łatwe. Natomiast Ogame pokazuje też, że połączenie Js i php sprawdza sie w takich aplikacjach świetnie. A jeśli by do tego dodać jeszcze AJAX, to program może być na prawdę świetny. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%)
|
Miej na uwadze, że OGame potrzebuje solidnej bazy danych, także wykonywania czynności co kilka sekund na serwerze (same zapytania userów nie wystarczają). Czemu? Kiedy flota dociera na miejsce, trzeba to przechwycić i wykonać działania...
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 28.05.2005 Ostrzeżenie: (0%)
|
moim zdaniem...
trzeba to oprzeć na klasach, jest to tutaj konieczne ze względu na rozbudowaną logikę gry. powinno się wyjść od zdefiniowania klas i relacji między nimi. Np: skonstruować klasę o nazwie np. "Gracz" odpowiedzialną za obsługę gracza. Powinna ona posiadać funkcję odczytu aktualnego stanu gracza (na początku skryptu) oraz metodę zapisu stanu gracza (na końcu skryptu). Nie przechowuj stanu gracza [1] w cookie, zmienny sesji (lub gdzie kolwiek po stronie klienta) - oszustwa murowane (chyba że będziesz szyfrował). [1] - stan gracza - mam na myśli dane o jego sojusznikach, planetach itp. |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%)
|
Cytat(pmalirz @ 2005-05-28 11:29:41) Powinna ona posiadać funkcję odczytu aktualnego stanu gracza (na początku skryptu) oraz metodę zapisu stanu gracza (na końcu skryptu) Pomysl dosc ciekawy, ale bym go troche ulepszyl - wprowadzilbym jakis mechanizm, ktory by sprawdzal czy stan gracza rzeczywiscie sie zmienil - przeciez nie wszystkie akcje (odswiezenia strony) go zmieniaja. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%)
|
Jeśli chodzi Ci o jakąś konkretną książkę, to jakiś czas temu natrafiłem w internecie na:
http://www.e-link.com.pl/x_C_I__P_423558-410004.html Nie oceniam tego , bo nie czytałem, ale kto wie, może się przyda ... |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%)
|
Heh... jak patrze na spis treści, to widze koło 140 stron nie z manuala. (a od tego odjąć wstęp, GD itp.)
|
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.02.2003 Ostrzeżenie: (0%)
|
Sam gram w Ogame i mocno się zastanawiałem jak ta gra jest stworzona. Pierwsze co mi się nasunełedo głowy że jest to serwer napisany w jakimś języku (php, C , C++ , perl.. etc.. ) Serwer ten otwiera port..i nasłuchuje... jesli dostanie od clienta nakaz wywolania czegos odpala timera swojego lub jakas funckje lub wysyla cos do niego itp.. Oczywiśćie wszystko na klasach.. a Savy i Loady pracują na bazie.. Bo jeśli 100 Osób na UNI nagle kliknie na Flote.. To to jest 100 zapytań do bazy.. Co już sprawa że server musi być dobry.. i na szybkim łączu.. dlatego nie wydaje mi się o że cała ta gra jest oparta jedynie na php+JS+MYSQL i wszystko co robi użytkownik są to zapytania do bazy..
Tak jak mówie. Uważam że jest Server jeden Który Savy i Loady ma w bazie, a wszystko inne w klasach. I w przypadku np. ataku Uruchamiany jest specjalny timer dla tego gracza.. który jak dojdzie do 0, uruchamia funckje itp... Przedewszystkim wszystko odbywało się na klasach.. Namieszałem troche.. ale wydaje mi się że to tak jest.. Ktoś się ze mną zgadza? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Pozdro Edit: Co do tego linku.. To ta książka jest jedynie do nauki.. Nauczy cię napisać szachy ... nic więcej nie wnosi ciekawego.... Sam ją kupiłem z nadzieją i się troche przeliczyłem.. Ten post edytował slepy 30.05.2005, 17:13:40 |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%)
|
Cytat(Imperior @ 2005-05-30 15:38:16) Heh... jak patrze na spis treści, to widze koło 140 stron nie z manuala. (a od tego odjąć wstęp, GD itp.) A czy ja pochwalam tę książkę ? Tak przy okazji podałem ten link (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Sam bym czegoś takiego w życiu nie kupił, jeśli chciałbym stworzyć grę w php (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%)
|
Cytat(Speedy @ 2005-05-30 16:19:57) A czy ja pochwalam tę książkę ? Tak przy okazji podałem ten link (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Sam bym czegoś takiego w życiu nie kupił, jeśli chciałbym stworzyć grę w php (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Ja tylko wypowiadam się odnośnie książki (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A co do tematu, to napewno jest na dobrych sprzętach. Ale czy na czymś jeszcze prócz baza i php? Nie wiem. Jedno uważam, że jest pewne... 100 kliknięć w ciągu sekundy to pikuś porównując z godzinami szczytu. |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.02.2003 Ostrzeżenie: (0%)
|
Zatem moje wniosko mogą być suszne.. Rozwinięcie tego temuatu jest godne uwagi.. Bo stworzenie takiej gry to coś. Klasy + savy + loady ( oparte na bazie ) Połączenie socketowe.. To wcale nie dla początkujących..
Więc jak ktoś się bierze za napisanie takiej gry.. Powinien posiadać dość dużą wiedze.. Sam spróbuje napisać:P Jesze usłyszycie o slepaku i jego grze;]] Pozdro.. |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
a co myslicie o wprawadzeniu wzorca MVC do pracy przy takim zadaniu, cos takiego moze sie sprawdzic przy grach internetowych? moze juz ktos tego probowal
|
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 12.01.2005 Ostrzeżenie: (0%)
|
jak na moje oko to to jest zrobione na podstawie bazy
id| flota skad | flota do | czas kiedy flota doleci | dane floty nie wiem czy widzicie to samo co ja ale po najechaniu na licznik czasu w js pokazuja sie fajne cyferki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wiec to jest czas kiedy flota doleci i kiedy ma byc odpalane obliczenie i teraz skrypt while(1) { //operacje na bazie z flotami } przeskakuje po calej bazie danych porownujac czas potem odpala nastepny skrypt z liczeniem wynikow i podaje to do jednej strony i drugiej jaka w tym filozofia? P.S. to naprawde trzeba mega machiny zeby przeleciec z 500 rekordow i odpalac kolejny skrypt jezeli if == true?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) P.S.2 a moze zbierze sie kilkunastu forumowiczow i zrobimy tu mini poligon "Jak tworzyc gierki w php?" z sugestiami i pytaniami:) jako oddzielny dzial:) Ten post edytował vala 31.05.2005, 05:25:01 |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 27.02.2003 Ostrzeżenie: (0%)
|
Co to P.Sów jestem za;p
Ale wierz mi jak 1000 osób na UNI puści flote i skrypt wykonywałby 1000 razy while(1) { // wyciaganie z bazy // porównywanie //jezeli doleciala jakas //obliczenia //poprawienie bazy // jest nic to nic } i tak średnio mniej niż na 1 sekunde to wszystko by było wykonywane.. to yh! Maszyna musiała by być naprawde niezła.. Przynajmniej tak mi się wydaje.. Jak wróce ze szkoły spróbuje zrobić 1000 rekordów, i działania na nich za pomocą funkcji while |
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%)
|
Witam wszystkich na forum :-)
Od niedawna czytam to forum i jeszcze nie zapoznalem sie ze wszystkimi tematami poruszanymi odnosnie tworzenia aplikacji internetowych (mam zwyczaj sledzic minimum 0,5 roku zanim cos napisze) i widze ze rozpoczal sie temat bardzo mnie interesujacy W chwili obecnej koncze projektowac zasady gry i rozgladam sie za technologiami ktore by temu podolaly. Na Ogame trafilem jakis miesiac po rozpoczeciu prac nad zasadami gry. Uwazam ze to co zrobili programisci w tej gierce jest niesamowite. Projekt gry nad ktora pracuje bedzie tworzona pod wezwaniem kola naukowego :-) wraz z postepem prac bedziemy (ja jako prowadzacy i studeci jako piszacy) starali sie dzielic zebranymi informacjami jak i artykulami ktore powstana w trakcie prac. Mam nadzieje ze znajdziemu tu miejsce gdzie bedziemy mogli dzielic sie swoimi odkryciami jak i liczyc na pomoc w rozwiazywaniu problemow przy tworzeniu slinika gry. zalozenia naszej gry sa nastepujace: 1. gra RPG 2. wizualizacja 3. brak ograniczania ruchu (na wiekszosci tego typu grach jest ograniczenie do kilkudziesieciu ruchow) 4. wieloosobowa 5. poruszanie sie druzyna 6. handel miedzy druzynami 7. (jeszcze nie skonczylismy wymyslac) ps. Jezeli napisalem cos nie tak to przepraszam :-) |
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 5.12.2004 Ostrzeżenie: (0%)
|
Tez zaczolem pisac rpga na php+mysql+js jakis czas temu. Glownie tekstowka, bo grafika brak, a i co bardziej rozwija wyobraznie niz tekst? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Prace stanely mniej wiecej na 20% z powodu braku czasu. Generalnie gierka to mapa, ktora z poziomu admina mozna rozwijac dodajac pola i tworzac miedzy nimi jakies przejscia (wszystko ma swoje dodatkowe cechy jak np: typ pola, szansa na encounter, zagrozenie itd itd), postacie ze swoimi charakterystykami + umiejetnosci, oraz duza baza przedmiotow roznakich i przeciwnikow/zwierzatek/potworow.
Za gre zabralem sie od strony singla. Tj. brak interakcji z innym graczem. Celem takiego zabiegu jest chec osiagniecia i dopieszczenia zabawy tylko z wirtualnym swiatkiem. To taki pierwszy krok, ktory juz pozwoli dzialac takiej aplikacji. Kolejny to juz chat, trade... czyli interakcja czysta. Wiadomo, ze w takich rzeczach nie powinno sie przesadzac i wsadzac funkcjonalnosci wiecej niz to jest potrzebne. Podobnie ma sie sprawa z sama walka. Mozna to najprosciej zrobic na zasadzie automatu czyt. koles klika na sarenke i walcza w ten sposob ze algorytm na walke pobierajacy jakies dane 2 przeciwnikow, warunki i inne wlasciwosci wylicza trafienie/pudlo/blok/obrazenia etc. Mozna tez skomplikowac i zrobic turowke dajac graczowi mozliwosc wyboru w kazdym momencie walki co zrobic czyt. atakowac pelna para, defensywnie, moze uciekac, moze sie uleczyc itd. Wtedy tez doszla by sprawa czasu tj. ile on moze sie zastanawiac co zrobic, moze by warto ograniczyc go odgornie jakims czasem po ktorym nastepuje ruch przeciwnika (zmarnowana tura)? Tylko co z lagami... w sumie interakcja z uzytkownikiem to plan dalszy w mojej rozpisce i planie. Nad walka jednak juz sie zastanawiam, bo to bedzie jeden z nastepnych elementow na jaki sie szarpne zaraz po tym jak obiekt gracza bedzie juz swobodnie spacerowal po stworzonym swiecie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ok... to takich ogolnikow pare. Mam nadzieje, ze podczas "wakacji" znajdzie sie wiecej wolnych weekendow coby ruszyc do przodu z ta gierka. |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%)
|
w zamysle miala byc gra jednoosobowa ale ekipa sie ociagala a ja majac czas im wymyslalem coraz to ciekawsze wodotryski i chyba zalapali ze jak nie zaczna nic robic to przez wakacje im tyle nawymyslam ze juz nikt tego nie napisze :-)
Caly czas nurtuje mnie walka oczywiscie tury jak najbardziej wchodza w gre. DOpiero technologia AJAX pokazala mi w ktorym kierunku nalezy isc. Co do ograniczenia czasu to wykozystamy chyba rozwiazanie z Falloutow czyli kazdemu z druzyny ustawi sie defoltowy atak i jak gracz nie zdazy zmienic to zostanie wykonanan ustawiona z gory akcja. Takie rozwiazanie jest potrzebne jak druzyna zostanie zaatakowana podczas nieobecnosci gracza :-) |
|
|
|
Post
#21
|
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 16.10.2004 Ostrzeżenie: (0%)
|
Zachwycając się Ogame... znacie X-wars? (Ta sama firma, można powiedzieć, że takie Ogame2). Tam są nawet takie rzeczy, jak stacjonowanie przyjacielskiej floty na orbicie, czy łączenie flot do ataku itp.
|
|
|
|
Post
#22
|
|
|
Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%)
|
hehe fakt temat bardzo ciekawy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wydaje mi sie ze php jest tu wykorzystywane tylko do przetwazania i prezentacji "zawartosci" bazy a engine gry chodzi juz na czyms innym (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
wywolywanie skryptu co sekunde cronem i "przetwazanie" calej gry to chyba nie najlepszy pomysl (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
|
Post
#23
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 29.04.2005 Ostrzeżenie: (0%)
|
Dlaczego sadzicie, ze serwer musi wykonac obliczenie wyniku ataku, dokladnie wtedy gdy on nastepuje? Albo ze surowce musza byc naliczane co chwilke ?
Taka gre mozna smialo porownac do czegos takiego: Jezeli drzewo spada w lesie, ale nikogo nie ma w poblizu to czy wydaje dzwiek? Wystwrczy ze akcje beda przeliczane w momencie gdy dany gracz tego potrzebuje (np wlasnie sie zalogowal). Owszem aby uniknac naglego zlagowania, pewne dawne akcje serwerek moze sobie systematycznie przetwazac, ale moze to robic kiedy ma wolny czas i nie jest obciazony... |
|
|
|
Post
#24
|
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 1 Dołączył: 3.04.2004 Skąd: Trójmiasto (Gdańsk) Ostrzeżenie: (0%)
|
Cytat(tarlandil @ 2005-06-02 00:11:08) Dlaczego sadzicie, ze serwer musi wykonac obliczenie wyniku ataku, dokladnie wtedy gdy on nastepuje? Albo ze surowce musza byc naliczane co chwilke ? według mnie takie podejście jeszcze bardziej komplikowało by sprawę w tym wypadku. A poza tym, Ogame sprawia wrażenie jakby jednak działało w intuicyjny sposób (wiadomości, raporty wojenne podpisane są konkretnym czasem itp.) przypuszczam że po wykonaniu przez gracza jakiejś akcji (np. rozpoczęcie budowy budynku), do listy trzymanej w jakiejś tabeli w bazie danych dodawana jest kolejna akcja do wykonania (np. zakończenie budowy budynku lub symulacja bitwy). I serwer co sekundkę sobie wybiera akcje z tabeli dla których zaplanowany czas wykonania <= NOW(), po czym je wykonuje;) |
|
|
|
Post
#25
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 29.04.2005 Ostrzeżenie: (0%)
|
rogrog, jakos nie widze aby Twoj pomysl roznicl sie bardzo od tego co napisalem, ani byl jakos prostszy
Na szczescie co do jednego sie zgadzamy, gra powinna byc oparta na akcjach / zdarzeniach. I zdarzenie powinno byc obliczony dopiero gdy nadejdzie wlasciwy czas. Ale jak sie przyjzec troche uwaznie, to przeciez takie zdarzenie nie musi byc wykonane dokladnie w okreslonym momencie. Najwazniejsze jest aby bylo wykonane po okreslonym czasie, przed tym jak bedzie potrzebne i zeby zdarzenia byly wykonane w odpowiedniej wzajemnej kolejnosci. A nie wiem czy jest sens trzymac sie tego zeby zdarzenia byly wykonywane o scisle zaplanowanej poze. Zdarzenia powinny byc wykonywane tak jak pasuje i zeby graczom sie wydawalo ze sa dokladnie o wyznaczonej poze. A natura takiej gry jest bardzo rozproszona, i imho pierwszenstwo w wykonywaniu zdarzen powinny miec te ktrore sa w tej chwili najbardizje potrzebne - czyli te ktorych gracze wlasnie buszuja po stronie - gdyz nie ma sensu aby serwer lcizyl teraz cos tysiaca innych graczy, jak ktos wlasnie czeka na wynik bitwy... Tak samo jak ktos zawali serwer duza iloscia roboty to on bedzie przede wszystkim czekal - na wykonanie skryptu ktory musi cos dla niego poprzelcizac. Jedynie najbardziej zalegle akcje powinny byc robione przez serwer regularnie, zeby nie bylo lagow, u graczy ktorzy od dluzszego czasu na strone nie weszli. Ten post edytował tarlandil 2.06.2005, 17:46:39 |
|
|
|
Post
#26
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Za wiekszosc czynnosci jest odpowiedzialna baza danych, przeliczenia itd, bo jakos nie wyobrazam sobie non stop przeliczen na php.
Jestem ciekaw jakie bazy wykorzystuja do takich gierek jak ogame. |
|
|
|
Post
#27
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%)
|
Ja zauwazylem jedna wlasciwosc :-)
Jak konczy sie budowa kopalnia to i tak tyrzeba odswierzyc (przeliczyc) surowce aby wzrosla produkcja. Czyli nie nastepuje to automatycznie. Miem nawet stwierdzic ze u mnie dziala skrypcik w JS odliczajacy czas po ktorym zegarek zmienia sie na inny link i tak naprawde dopiero po odsierzeniu w bazie nastepuje wzrost produkcji. W bazie jest zapisane ze rozpoczolem budowe kopalni i zakonczy sie ona po 2 godzinach ale odswierzenie(wywolanie skryptu) powoduje zwiekszenie jednostek produkcyjnych. Co do samej produkcji to caly czas klikamy po zakladkach i tam moze byc wyliczany na bierzaco stan mineralow natomist dla nie zalogowanych moze to sie odbywac np po wyslaniu sondy szpiegowskie lub po zalogowaniu gracza. Ja natomiast borykam sie z innym problemem :-) Jest sobie bitwa i w jej trakcie gracze (jednym moze byc serverek i jego inteligiencja) okladaja sie nazmiane po kolei kazdym z czlonkow druzyny(kolejnosc jest okreslana na podstawie kilku cech) i jak zmusic gracza aby wykonal ruch w ciagu 30 sekund, a jak nie to zeby zrobil to za niego serwer a gracz po przeciwnej stronie mial otwarta droge i mogl wykonac swoj ruch? Ten post edytował vegelus 2.06.2005, 18:53:44 |
|
|
|
Post
#28
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 29.04.2005 Ostrzeżenie: (0%)
|
Co do naliczania surowcow w ogame to wstarczy spojrzec na buga iI.
Surowce pojawiaja sie na plenecie dopiero gdy jest onaprzeszpiegowana - wtedy nastepuje naliczenie z kopalni, a ze cos skopali, to jak kogos nie bylo przez 3 tygodnie to mu sie masa kasy zjawia, pomimo braku magazynow ;] Co do ruchow naprzemian, to sprawa jest mniej skomplikowana niz sie wydaje. W momencie wykonania akcji (czyli jakiegos skryptu php) przez ktoregokolwiek gracza, serwer potrafi okreslic czy minelo juz te 30sekund( a moze minely cale 3 minuty bo obydwaj gracze olali, na chwile zabawe) i po prostu nadgonic, czyli wykonac za nich brakujace akcje. Jezeli gracze oleja gre na 1h, to serwer ich takze na ta 1h godzine powinien olac, a dopiero gdy ktorys zrobi request, to przeliczyc wszystko co powinien. |
|
|
|
Post
#29
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%)
|
mnie bardziej nurtuje co robic jak jeden oleje a drugi czeka :-)
Koncepcja jest taka aby co 30 sekund (np) zmieniala sie tura czyli wykonuje ruch gracz 1, wtedy dopiero moze wykonac ruch gracz 2, i tak na przemian. takich tur moze byc bardzo duzo wiec potrzebne jest ograniczenie czasowe aby jedna bitwa nie trwala 3 godzin. Wpadlem na pomysl aby zastosowac ograniczenie czasowe. I tak jak jeden bedzie sie guzdral to serwer wykona za niego ruch a gracz po przeciwnej stronie dostanie zielone swiatlo na swoja akcje. Po jej wykonaniu znowu czeka okreslony czas widzi efektu dzialania przeciwnika i wykonuje swoja akcje. Nie bylo by problemu jakby gracz walczyl z przeciwnikiem komputerowym bo moze wtedy myslec i dumac pol dnia, ale w scenariuszu dopuszczamy do walki czterech graczy na raz i tu nie mozna dopuscic do rozgrywki szachowej ;-) |
|
|
|
Post
#30
|
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 1.06.2005 Ostrzeżenie: (0%)
|
Możesz to zrobić na dwa sposoby.
I. 1. Ustalasz kolejność akcji dla graczy 2. Ten kto zaczyna atakuje i ma zapisywane ze zaatakowal o pewnym czasie - teraz nie moze wykonac zadnej akcji przez 30*ilosc_graczy sekund (to jeszcze zalezy jak chcesz zeby przebiegala walka). 3. Po 30 sekundach moze zaatakowac kolejny gracz z kolejki i tak samo jak z graczem nr. 1 . Wystarczy zapisywac czasy ich ataku (najlepiej do tabeli wirtualnej, wtedy wszystko szybko bedzie chodzic) i patrzec czy ktos moze juz zaatakowac czy nie. W tym przypadku gracz sam sobie musi odswiezac strone (lub robi to za niego skrypt javy), II. 1. Nie ustalasz kolejnosci, tylko robisz tak ze gdy gracze spotykaja sie w jednym miejscu to kazdy z nich moze zaatakowac. Nastepnie moga zaatakowac dopiero po 30 sekundach (znowu tabela tymczasowa). Obliczas sobie te obrazenia na zasadzie jakiegos pierwszenstwa (kto szybciej kliknal, kto ma cos tam wiekszego). Teraz mozesz zrobic taki dodatek, ze dla oby tych przypadkow, sa ustalone reguly postepowania typu - jezeli w tabeli akcji nie ma akcji gracza przebywajacego w danym miejscu, w danym czasie, a powinna byc juz wykonana (minelo kolejne 30 sekund) to COSTAM (no i sobie te costam ustalasz ty, czy gracz). Po kazdych 30 sekundach (II przypadek) lub 30*ilosc_graczy(I) po prostu usuwasz z tabeli tymczasowej wszelkie akcjce, robiac przy okazji obliczenia |
|
|
|
Post
#31
|
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 5 Dołączył: 8.11.2004 Skąd: trójmiasto Ostrzeżenie: (0%)
|
do hwao:
dlaczego odradzasz bawienia sie na plikach? pytam bo chce stworzyć baze ale na plikach. przeciez jak sie uzycie takich funkcji jak file explode implode to obsluga plikow staje sie banalna |
|
|
|
Post
#32
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 29.04.2005 Ostrzeżenie: (0%)
|
Ja widze 2 rozwiazania (mowiles o nich tylko zbiore je do kupy ;] )
Gracz nie wykonuje swojego ruchu w okreslonym czasie 1) serwer robi to za niego (niekoniecnzie optymalnie) 2) gracz traci ruch, serwer nie wykonal za niego akcji, i mozliwosc ruchu ma nastepny gracz. Fakty: Serwer moze cokolwiek robic tylko w momencie odwiezenia strony przez ktoregos z 2 graczy. Gracze nie moga sie dowiedziec co sie dzieje na serwerze bez odswiezenia strony. Serwer nie patrzy caly czas, na to co sie dzieje, ale ma tak jakby "przeblyski swiadomosci" co jakis czas, ale to nie przeszkadza - zauwaz ze do odtworzenia calej rozgrywki wystarczy znac czas rozpoczecia akcji oraz rozkazy i czasy ich wykonania - wtedy moze sbie w pamieci szybciutko zasymulowac cala rozgrywke. Oczywiscie lcizenie od nowa przy kazdym przeladowaniu nie jest dobrym pomyslem, wiec serwer pamieta stan gry i czas w ktorym ten stan gry jest aktualny. I podczas kolejnych przebiegow skryptow (bo gracz odswieza strone) serwer patrzy na aktualny czas i oblicza zmiany na podstawie nowego czasu, poprzedniego stanu gry i otrzymanych rozkazow i zapamietuje sobie nowy stan.. php_programmer: ona jest banalna, ale nie oferuje zadnych przyspieszen, wykrywania i zapobiegania kolizjom - rownoczesnemu dostepowi. SQL daje to wszystko, wraz z b wygodnym interfejsem do pobierania zadancyh danych. Ten post edytował tarlandil 3.06.2005, 09:31:02 |
|
|
|
Post
#33
|
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 1 Dołączył: 3.04.2004 Skąd: Trójmiasto (Gdańsk) Ostrzeżenie: (0%)
|
Cytat(tarlandil @ 2005-06-02 18:43:49) rogrog, jakos nie widze aby Twoj pomysl roznicl sie bardzo od tego co napisalem, ani byl jakos prostszy moze i tak, ale gdybym ja miał pisać taką grę to chyba bym wybrał moje podejście bo czuję że tak prościej;) |
|
|
|
Post
#34
|
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 0 Dołączył: 12.01.2005 Ostrzeżenie: (0%)
|
hmm biorac pod uwage triggery
czyli o ile rozumiem jakis system zdarzen dynamicznych taka aplikacja jak ogame jest dosc prosta |
|
|
|
Post
#35
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%)
|
Dobrym pomyslem jest uzupelnienie strony o JS i w momecie gdy serwer wyliczy sobie ze minelo 30s to zaczyna akcje natomiast u gracza wszystkie linki staja sie nieaktywne :-) Dopiero po jakiejs akcji (odswierzenie strony) bedzie mogl wrocic do gry.
Jezeli chodzi o kolejnosc graczy koncepcja jest taka ze na poczatku kazdej tury wyliczana jest inicjatywa (ktory bohater atakuje pierwszy lub potwor) i na jej podstawie przeprowadzane sa ataki. Wystarczy tylko pilnowac kolejnosci i odstepow czasowych i mamy zalatwione. Mnie martwi tylko informowanie o tych kacjach graczy :-( Przyzwyczailem sie do gierek offline gdzie wszystko dzialo sie od razu i jakos nie moge przestawic myslenia na online (choc tez testowalem kilak ale nie w technologii php) naszczescie ja jestem od problemow a studenci na kole od ich rozwiazywania :-) po przedstawieniu mojej ostatniej koncepcji kilku chcialo popelnic samobujstwo :-) |
|
|
|
Post
#36
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%)
|
Cytat dlaczego odradzasz bawienia sie na plikach? pytam bo chce stworzyć baze ale na plikach. przeciez jak sie uzycie takich funkcji jak file explode implode to obsluga plikow staje sie banalna Mylisz sie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#37
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.06.2005 Ostrzeżenie: (0%)
|
elo ja tesh sobie robie gre w php i ma takie pytanko ma ktos moze jakis pomysł jak wykonywac kod co jakis czas? np co godzine czy tam 2 bez uzycia crona?!
|
|
|
|
Post
#38
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
Cytat dlaczego odradzasz bawienia sie na plikach? pytam bo chce stworzyć baze ale na plikach. przeciez jak sie uzycie takich funkcji jak ......... Rozbudowujac taki systemik w pewnym momencie zrobisz z tego baze danych, nieswiadomie powolutku rozwijajac - no i po co na nowo odkywac ameryke? Musisz wdrozyc DB i zobaczysz jakie wtedy wspaniale jest rzezbienie kodu z wykorzystaniem baz. |
|
|
|
Post
#39
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.06.2005 Ostrzeżenie: (0%)
|
racja db to podstawa ja robie na db jest wygodniej ;D
|
|
|
|
Post
#40
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
NIe tyle jest wygodniej co zapominasz o mechanizmach zapisu i odczytu i zawsze masz pewnosc (no prawie) ze przez przypadek nie stracisz danych.
|
|
|
|
Post
#41
|
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%)
|
no i jeszcze mozna dodac ze w bazie lepiej cos przetworzyc za pomoca skryptow zapisac a wynik pokazac graczom :-)
lepiej zeby wszystko sie dzialo na serwerku a tylko wyniki pokazywaly sie na monitorach |
|
|
|
Post
#42
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 10.06.2005 Ostrzeżenie: (0%)
|
Czesc!
W takich grach jak Ogame nie ma czasu, zeby bawić się w pętle albo liczniki. Odmierzanie czasu jest albo zrobione tak, ze jest tabela z polem czas i ID operacji (powiazanie do innej tabeli zawierajacej dane o tym co w tym czasie ma byc zrobione) i ta tabela jest zindeksowana i posortowana, tak, że wyszukiwanie pól o czasie równym czasowi bieżącemu jest bardzo krótkie. Mozliwe tez ze jest kilka tabel oddzielnie dla zdarzen bliskich (kilka minut) i zdarzen odleglych (kilka godzin) i sa one przenoszone gdy zachodzi taka potrzeba. Badz co badz to jest system czasu rzeczywistego, tak jak systemy operacyjne. Takze wiedza z tego zakresu moze Wam pomoc w zrozumieniu procesow dzialajacych w tej grze (np. kolejki, priorytety itp.) Prosze wtajemniczonych o potwierdzenie~! |
|
|
|
Post
#43
|
|
|
Grupa: Zarejestrowani Postów: 475 Pomógł: 0 Dołączył: 1.04.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
A tak na prawdę nikt nie wiem jak to jest w OGame, bo OGame nie jest stworzone ani rozwijane przez Polaków (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
|
Post
#44
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 10.06.2005 Ostrzeżenie: (0%)
|
Cytat(NetJaro @ 2006-01-18 23:15:57) A tak na prawdę nikt nie wiem jak to jest w OGame, bo OGame nie jest stworzone ani rozwijane przez Polaków (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) to nie stoi na przeszkodzie do zrozumienia jego dzialania |
|
|
|
Post
#45
|
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%)
|
Wspomnę jeszcze o tej książce, do której podałem wcześniej w tym temacie link:
Miałem okazję jakiś czas temu przeglądnąć ją sobie w księgarni (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . To fakt, że pierwsza, większa cześć książki to opis języka php pokrywający się wartością merytoryczną w dużej mierze z manualem, ale za to pod koniec jest pokazane po kolei jak zrobić taką małą, sympatyczną grę: tworzenie serwera, tworzenie klienta itd. , a sama gra, to walki czołgów dynamicznie generowanych w GD, na wygenerowanym terenie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . Nie mogłem się zbyt mocno zgłębić w tę książkę w ciągu kilku minut, ale z pewnością chociaż jej część jest godna uwagi ze względu na "nieszablonowość" opisywanego zagadnienia (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . |
|
|
|
Post
#46
|
|
|
Grupa: Zablokowani Postów: 655 Pomógł: 0 Dołączył: 28.11.2003 Skąd: Zagórz Ostrzeżenie: (80%)
|
za namowa forumowicza, kontunuuje temat (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
jesli ktos ma jakies nowe, ciekawe, spostrzezenia, zapraszam do dyskusji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) sprawa ma sie tak, ze musze w technologi php wykonac gre (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#47
|
|
|
Grupa: Zarejestrowani Postów: 475 Pomógł: 0 Dołączył: 1.04.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
Speedy, mam ta ksiazke - kupilem. Troche malo opisow - poczatkujacy by sobie nie poradzil (tzn. moj znajomy nie mogl). Ale ogolnie fajna ksiazka - szkoda, ze php4 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ale to maly pryszcz - chociaz, przy pisaniu klient/serwer jest spora roznica..
Ten post edytował NetJaro 22.01.2006, 20:59:29 |
|
|
|
Post
#48
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
Zastanawia mnie sens pisania gry w php. Skrypt php dziala wtedy kiedy przez przegladarke sie go wywola (nie tylko - wiem). Ale jesli chcemy napisac serwer dla gry to czemu uzyc do tego php? co php ma takiego co czyni ten jezyk tak przydatnym w tym? Nie gram w takie gry wiec nie rozumiem wytlumaczcie mi. Mi sie wydaje ze o wiele sensowniej jest napisac serwer w javie w ktorej cos takiego mozna napisac w kilka chwil.
|
|
|
|
Post
#49
|
|
|
Grupa: Zablokowani Postów: 46 Pomógł: 0 Dołączył: 12.01.2006 Ostrzeżenie: (10%)
|
Kiedyś stworzyłem grę w php 4 pisząc ją strukturalnie. Jest to taki managerek sportu żużlowego zrobiony dla mnie i znajomych (screen shoty: http://smol.pl/zrzuty.php). Przyznam, że php + MySQL radzę sobie nieźle w tego typu aplikacjach. Najbardziej jestem dumny z tego, że udało mi się zsynchronizować, że dwóch graczy rozgrywa na żywo, w czasie rzeczywistym mecz ligowy. Spotykają się i jadą. Podczas meczu mogą wykonywać wiele czynności i na prawdę php w 100% nadaje się do programowania gier.
Najlepsza konfiguracja to php, Oracle, Ajax i wszystko można (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jeden z kolegów chciał oprzeć bazę o pliki. Nigdy w życiu! Już to przerabiałem na początku. Przy większęj ilości danych niż 100 wierszy wszystko się sypie (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Tak teorezujecie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A może od strony praktycznej podyskutujemy? Najlepiej grę wykonać w PHP5, przy OOP i MVC. Jest kilka ważnych zagadnień: - jak wykonać klasę odpowiedzialną za uwierzytelnianie (oparcie o cookies w sesji to mało bezpieczne rozwiązanie przy masowej grze)? - jak keszować zapytania sql (bez keszowania nie ma co nawet próbowac uruchomiać masowej gry)? To na początek. Jeżeli chodzi o keszowanie, to wiadomo, że tylko 1-2% graczy jest on-line, a więc po co pobierać za każdym odświeżeniem ich pozycje, stan, itp. Najlepiej chyba tylko wtedy, kiedy coś się zmieni (przy poleceniu UPDATE zrzucać kesze). Może ktoś pokusi się o stworzenie 2 powyższych klas? |
|
|
|
Post
#50
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
Cytat(eMartio @ 2006-01-24 16:54:56) Jest kilka ważnych zagadnień: - jak wykonać klasę odpowiedzialną za uwierzytelnianie (oparcie o cookies w sesji to mało bezpieczne rozwiązanie przy masowej grze)? - jak keszować zapytania sql (bez keszowania nie ma co nawet próbowac uruchomiać masowej gry)? Odnosnie keszowania to wiele systemow abstrakcji db ma cos takiego np. http://adodb.sourceforge.net/. C do uwierzytelniania sesje+cookie sa mechanizmami do tego przeznaczonymi i jesli chcesz uzywac przegladarki do grania na nic wiecej nie licz. Mozesz to wszystko zabezpieczyc przy pomocy ssl wtedy mozna zalozyc ze nikt nie ukradnie sesji i nie podslucha ciastka podczas przesylu (przynajmniej ryzyko bedzie minimalne) |
|
|
|
Post
#51
|
|
|
Grupa: Zablokowani Postów: 46 Pomógł: 0 Dołączył: 12.01.2006 Ostrzeżenie: (10%)
|
Szkoda, że w php jesteśmy skazani na sesje, gdyż wszystko, co przechowuje informacje po stronie klienta, nie jest w 100% bezpieczne (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Przed chwilką zarejestrowałem się w ogame.pl. Widać gołym okiem, że gra wykonana w php (była taka dyskusja we wcześniejszych postach). Jedno, co mnie zaskoczyło, to to, że ID sesji przekazują w linku! Jest to szczyt głupoty, aż wierzyć się nie chce, że autorzy gry zrobili coś takiego. Pomimo, że maskują URL i pewnie używają JS do niedodawania strony do historii, i tak istnieje ryzyko, że gdzieś owy link utknie... Np. w na komputerze w kafejce internetowej. A mając id sesji już wiele nie potrzeba, aby komuś namieszać w grze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Właśnie, czy ktoś wie jak zaprojektować optymalną klasę właśnie do uwierzytelniania? |
|
|
|
Post
#52
|
|
|
Grupa: Zarejestrowani Postów: 475 Pomógł: 0 Dołączył: 1.04.2005 Skąd: Warszawa Ostrzeżenie: (0%)
|
Hmm.. co to jest "keszowanie zapytan" - chodzi tutaj o cache?
|
|
|
|
Post
#53
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
Cytat(eMartio @ 2006-01-24 17:12:28) Szkoda, że w php jesteśmy skazani na sesje, gdyż wszystko, co przechowuje informacje po stronie klienta, nie jest w 100% bezpieczne nie nie jest w 100% bezpieczne. Jakas czesc aplikacji musi byc po stronie klijeta chocby kod html. Cookie mozna szyfrowac i nawet jak je przechwycisz to nie skorzystasz. Sesja w linku eliminuje koniecznosc trzymania cookie a jesli zakonczysz dzialanie przegladarki nawet znajac link z sesja nie dostaniesz sie do tego na co link wskazuje poniewaz serwer powinien skasowac plik sesji (lub rekord w db), jesli tak sie stanie zadne informacje przecowywane w sesji nie beda juz dostepne i powstanie blad poniwaz sesja o danym id nie istnieje. |
|
|
|
Post
#54
|
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 2.01.2006 Ostrzeżenie: (0%)
|
Cytat(NetJaro @ 2006-01-24 15:38:51) Hmm.. co to jest "keszowanie zapytan" - chodzi tutaj o cache? Tak, chodzi o cache. Są tabele i dane w nich, które nie zmieniają się dość często, a więc po co pobierać je z bazy? Lepiej keszować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#55
|
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 4 Dołączył: 22.01.2005 Ostrzeżenie: (0%)
|
Mam pytanko wiem że parenaście postów wcześniej były już przykłady realizowania akcji które mają być wykonywane a najbliższym czasie. Czy ktoś ma jakiś sprawdzony i naprawde szybki sposób ?
Pozdrawiam |
|
|
|
Post
#56
|
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%)
|
Cytat(eMartio @ 2006-01-24 17:12:28) Jedno, co mnie zaskoczyło, to to, że ID sesji przekazują w linku! ... i tak istnieje ryzyko, że gdzieś owy link utknie... Np. w na komputerze w kafejce internetowej. A mając id sesji już wiele nie potrzeba, aby komuś namieszać w grze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Po pierwsze sesje zwykle mają ograniczoną długość trwania. Wylogowanie zwykle konczy sesje Zatem przejecie identyfikatora sesji po tym jak ona juz wygasnie nie stanowi problemu. Po drugie jesli nawet sesje przechowywane są w $_SESSIONS lub bazie danych to jesli koles w kafejce nie wyloguje sie z gry i zostawi otwarta przegladarke internetowa to i tak mozna mu namieszac. |
|
|
|
Post
#57
|
|
|
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... |
|
|
|
Post
#58
|
|
|
Grupa: Zarejestrowani Postów: 402 Pomógł: 0 Dołączył: 20.01.2003 Ostrzeżenie: (0%)
|
Cytat(Ludvik @ 2006-01-25 20:46:56) Mamy już serwer gry (php w tym przypadku odpada). why? php w CLI i mamy zgrabny serwer. |
|
|
|
Post
#59
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 11.08.2006 Skąd: Wałcz Ostrzeżenie: (0%)
|
chciałbym przypomniec pierwsze pytanie odnosnie kursów i tutoriali, najlepiej online
|
|
|
|
Post
#60
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 11.01.2007 Ostrzeżenie: (0%)
|
chcialem zapytac czy jest na tym forum temat o robieniu gier internetowych dla początkujących (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Albo są w internecie moze jakies kursy czy poradniki prosze o szybką odp. |
|
|
|
Post
#61
|
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 1 Dołączył: 23.01.2007 Skąd: Wołomin Ostrzeżenie: (0%)
|
Hmmm...... Skoro już poruszylście ten temat, to może pomożecie mi.
Planuję zrobić podobną stronkę, ale nie wiem jak zrobić takie odliczanie czasu, jakie jest na ogame przy np. budowie budynków. Wiem, że pozostały czas należy policzyć przez php, ale nie mogę znaleźć odpowiedniego skryptu w javascript. Może wy znacie? Proszę o pomoc. |
|
|
|
Post
#62
|
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#63
|
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 24.07.2006 Ostrzeżenie: (0%)
|
Zainteresował mnie ten temat. Mam pytanie co do np. "mapy wiosek" - taka jak znajduje się tutaj: http://www.plemiona.pl/intro.php?page=2&ref=intro
W jaki sposób to jest robiony. W celu zachowania płynności w przewijaniu mapy można zastosować ajaxa. Tylko jak zapisywać współrzędne nowego obiektu na mapie a poźniej je wyświetlić? Można by to trzymac w bazie ale czy to skuteczny sposób? |
|
|
|
Post
#64
|
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 10.02.2007 Ostrzeżenie: (0%)
|
ja też mam zamiar napisać taką gre...bedzie to połączenie php + mysql + java script (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
|
|
|
|
Post
#65
|
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%)
|
ale żeś odkrył Amerykę, dethim
-------- post nie wnoszący nic do dyskusji. warning na Twoje konto ~Cienki1980 |
|
|
|
Post
#66
|
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 12 Dołączył: 16.03.2007 Ostrzeżenie: (0%)
|
Co do kursów i nauki najlepszą nauką jest praktyka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A co zrobić gdy ciągle krążymy w kółko nie mogąc sobie poradzić problemem ? Korzystamy z praktyki i doświadczenia innych ==> ściągamy kody źródłowe. Jak chcesz się dowiedzieć w jakiś sposób jest to zrobione w ogame ściągnij sobie Ugamelle silnik gry ogame.
|
|
|
|
Post
#67
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%)
|
witam wszystkich. Jestem slepiec, nieco doświadczony programista, student fizyki na UTP w Bydgoszczy.
R4D3K dzięki z info o silniki, sie sprawdzi. Już dwa lata temu chciałem się zabrać za grę w php, wtedy był pierwszy boom na ogame. Jednak ciągle babrałem sie z bazą danych. Kilka razy dochodziłem do wersji pozwalających na budowanie budynków, a potem dochodziłem do wniosku że moje bazy były źle zaprojektowane. Teraz wracam do pomysłu gry napychając swoją głowę następną dawką pomysłów. wiec może ruszając ten temat na nowo, zaczniemy od bazy. Po to tylko na początku wydaje się proste. Choćby jak trzymać w bazie dane, że po wybudowaniu tego i tego budynku możesz wznieść jakiś inny. co do Plemion ...wygląda jak Travian. |
|
|
|
Post
#68
|
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 2 Dołączył: 17.01.2005 Ostrzeżenie: (0%)
|
Travian wygląda lepiej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ja w swojej grze załatwiłem ten sposób w dwojaki sposób:a) Cron o ustalonych godzinach zeby skrypt dopisal wszystkie budynkiB) gdy gracz wchodzi na strone wykonywane sa standardowe checki czy cos juz sie nie skonczylo, ile powinien kasy dodac etc....Proste, w miare szybkie, ale moze ktos lepiej to rozwiazal.Dodam jeszcze tak na boku ze TEN WĄTEK i tak jest bogaty w informacje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Szczerze powiedziawszy jezeli po przeanalizowaniu tych tresci wciąz sie nie wie jak to zrobic, to chyba lepiej podszlifowac umiejetnosci i zdobyc doswiadczenie niz faszerowac forum prawie takimi samymi problemami. Pewne charakterystyczne problemy ok, ale zeby od razu robić "projektowanie za raczke z Forum.php.pl". Przy robieniu swojej gry (wciaz jej nie skonczylem, natlok innych zajec) najistotniejsze chyba byly moje wlasne przemyslenia i doswiadczenia projektowe.
|
|
|
|
Post
#69
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 23.08.2007 Ostrzeżenie: (0%)
|
Luck : a po co ci Cron ? jak user się loguje (czy też odświeża stronę) przeliczasz czy już budynek się wybudował, jak tak to przeliczasz ile powinieneś doliczyć surowców za czas od wybudowania do teraz. Podobnie z walką : wszystko można wyliczyć dopiero gdy jest to potrzebne; dopóki któryś z graczy nie sprawdzi wyników - tych wyników nie ma. Możesz sobie wyliczyć gdzie się spotkają wrogie okręty i kiedy (jeśli ci to potrzebne) i jeśli żaden z graczy nie wycofa armii to sprawdzasz wyniki walk między nimi - nie musisz ich śledzić co chwilę.Luck : a po co ci Cron ? jak user się loguje (czy też odświeża stronę) przeliczasz czy już budynek się wybudował, jak tak to przeliczasz ile powinieneś doliczyć surowców za czas od wybudowania do teraz. Podobnie z walką : wszystko można wyliczyć dopiero gdy jest to potrzebne; dopóki któryś z graczy nie sprawdzi wyników - tych wyników nie ma. Możesz sobie wyliczyć gdzie się spotkają wrogie okręty i kiedy (jeśli ci to potrzebne) i jeśli żaden z graczy nie wycofa armii to sprawdzasz wyniki walk między nimi - nie musisz ich śledzić co chwilę.
|
|
|
|
Post
#70
|
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 2 Dołączył: 17.01.2005 Ostrzeżenie: (0%)
|
slepiec tylko ze cron jest uzywany wtedy dy trzeba wykonac statystyki dla gry (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) bo co gdy jakis gosciu si enie loguje przez 2 tydnie a ma mnostwo punktow mniej? ja Crona smiem uzywac max 4 razy dziennie co 6h, zapewnia dynamike i srednie obciazenie dla bazy, a pozwala czesto zaoszczedzic wiele miejsca np na danych tymczasowych.
|
|
|
|
Post
#71
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 16.11.2005 Ostrzeżenie: (0%)
|
Co to akcji w czasie w grach typu ogame:
WG mnie wszystko odbywa się przez wyzwalanie obliczeń tylko poprzez odświerzanie stron. Ktoś tu napisał: "Jak spada drzewo w lesie i nikogo nie ma w okolicy co czy słychać hałas?" zgadzam się z nim w 100%. Wszystkie obliczenia to banał: Przyrost surowców: dane: -nazwa -ostatni czas przeliczenia -parametr przyrostu -ilosc POST-> 1. ilosc += (Now - ostatni czas przeliczenia) * parametr przyrostu 2. ostatni czas przeliczenia = Now Bitwa dane: -cel -nasza flota -czas bitwy -raport -czas_odlotu_celu (jak obronca zabiera flote zostaje slad) POST 1. przelicz surowce na atakowanej planecie 2. przelicz przyrost jednostek na atakowanej planecie 3. jeśli brak raportu i czas_bitwy<NOW oraz czas_odlotu_celu >= czas_ataku to oblicz_bitwe Pozdrawiam. |
|
|
|
Post
#72
|
|
|
Grupa: Zarejestrowani Postów: 1 657 Pomógł: 125 Dołączył: 29.04.2006 Ostrzeżenie: (0%)
|
odkopywanie starych tematów jest nielubianą praktyką, ale mniej więcej trafiłeś w sedno działania... Z tym, że w nowszych grach jest to dużo bardziej skomplikowane...
|
|
|
|
Post
#73
|
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.03.2006 Ostrzeżenie: (0%)
|
witam
skoro jest tu mowa o grach w php to przyznam sie ze tez kiedys myslalem o stworzeniu takiej gry, tylko mam takie jedno pytanie nad ktorym zawsze sie zastanawialem, moze mi odpowiecie, a wiec jak to jest zrobione w tych grach php ze np dwoch uzytkownikow walcza ze soba czy cos tam rewalizuja ze soba i na jakiej podstawie jest wyciagany zwyciezca tego pojedynku ? chodzi mi o php jak to jest zrobione w php ze jeden z nich wygrywa, na co jest brane pod uwage i na jakiej zasadzie jest wyciagany zwyciezca ? z gory dziekuje za odpowiedz, pozdrawiam |
|
|
|
Post
#74
|
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 2 Dołączył: 25.12.2006 Ostrzeżenie: (0%)
|
to zależy co masz w tej grze...
Jeśli masz np. bronie, sile i wytrzymałość to to jest brane pod uwagę... wiesz, rozwiązania są różne... Wszystko opiera sie na obliczeniach... Wyciąga się dane z bazy, oblicza się czy wygra (po przez porównanie broni, siły i wytrzymałości) i zazwyczaj oblicza sie ile energii i życia mu to zabierze, wstawia sie zegarek w JS (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#75
|
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 12.12.2007 Ostrzeżenie: (0%)
|
Nagle wszyscy chcą napisać własną grę online (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) ... Aby ją napisać trzeba logicznie myśleć. Ale jak nie wie się nawet w jakich językach chce się napisać grę, to nie radzę się zabierać za jej pisanie. Sam jestem w trakcie pisania takiej gry. Może kiedyś pokażę na forum.
Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) ... |
|
|
|
Post
#76
|
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 2 Dołączył: 25.12.2006 Ostrzeżenie: (0%)
|
Ja też (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Już kilka procent mam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ;
Tematyka: II Wojna Światowa; Języki: PHP, MySQL, xHTML, CSS, JavaScript, (może z Ajaxa skorzystam); Na forum gdzieś jest nawet projekt (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ; |
|
|
|
Post
#77
|
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 5.10.2008 Ostrzeżenie: (0%)
|
Witam chciałbym odświeżyć trochę ten wątek. Proponuję stworzyć grupkę programistów którzy zajęli by się projektem stworzenia gry internetowej. Wiem sporo o mechanizmach w grach typu Ogame jednak w pojedynkę niczego wielkiego nie zdziałam z racji braku czasu jak i czasem pomysłów. W grupce zawsze można coś przedyskutować i wybrać najlepsze rozwiązanie. Poza tym można zrobić podział obowiązków by każdy zajmował się osobnymi elementami w grze.
W internecie choćby na tym forum jest taki ogrom informacji, że dla chcącego nic trudnego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Myślę że na początek przydali by się: 1. Osoba odpowiedzialna za kształt bazy danych i jej optymalne działanie 2. Osoba sprawnie pisząca zapytania do bazy w PHP (przydała by się znajomość uniemożliwienia SQL Injection) 3. Javascript i Ajax 4. Osoba od Designu strony - mile widziany talent do robienia grafiki Założyli byśmy forum i tam dyskutowali, ewentualnie kanał na IRCu. Oferuję hosting na grę z dowolną liczbą bazy danych. Chętnych proszę o pw, najlepiej z numerem gg |
|
|
|
![]() ![]() |
|
Aktualny czas: 4.12.2025 - 12:17 |