Apache jako serwer gry przeglądarkowej

Apache jako serwer gry przeglądarkowej
0

Witam! Czy można wykorzystać apache jako serwer gry przeglądarkowej? Tak aby tak jak to robi na żądania użytkownikó wywyłał im strony ale oprócz tego posiadał jakąś nieskonczoną pętle zawierającą timery itp.

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 18 godzin
0

Sam Apache nie. Potrzebujesz jeszcze jakiś inny proces zajmujący się logiką rozgrywki. Przykładowo dla Railsów może być to DelayedJob lub Resque.


0

?? Railsy, DelayedJob, Resque?? co to?
Ten inny proces to mam rozumieć że na tym samym fizycznym serwerze jakiś programik c++? i w jaki sposób będzie on się komunikował zuzytkownikami? przez baze danych czy sockety jakieś czy co?

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 18 godzin
0

W dowolnym miejscu, komunikacja dowolna, byle by wymiana była płynna. Dobrym pomysłem jest np. Redis, RabbitMQ czy MemchacheQ.


0

hmm, mógłbyś np podać swoje gg? Wtedy bym się ciebie jeszcze szybko o pare rzeczy spyał, bo nie wszystko rozumiem.

Demonical Monk
Nie ma szans. Takie rzeczy powinno wyjaśniać się w wątku, aby był pomocny w przyszłości.
hauleth
Nie podam GG z dwóch powodów. Nie używam go oraz jeśli masz problem to po pierwsze Google po drugie forum.
Riddle
po pierwsze Google, potem dokumentacja, potem forum na którym się szuka czy nie było takiego tematu, i ewentualnie potem na forum.
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:10 dni
  • Lokalizacja:Rzeszów
0

A nie możesz tych nazw wpisać w Google i poczytać co do czego? :/


1

prawie wszystko jest po angielsku i niestety nie rozumiem dokładnie

0

ale ten model co podalem jest prawidłowy?
stronka w php na apachu + na tym samym fizycznym serwie jakiś program c++ zawierający timery i przeliczający + jakieś połączeni między nimi (nie mam pojęcia jakie!!!)

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:10 dni
  • Lokalizacja:Rzeszów
0

Bez znajomości angielskiego i w tym wieku (wiem z dokładnością do 2-3 lat ile masz lat) to się nie masz co brać za coś takiego. No i wypada doliczyć do tego brak znajomości programowania pod webdeveloperkę (to, że coś liznąłeś to zdecydowanie za mało). W skrócie - takie gry tworzą długimi miesiącami ekipy doświadczonych programistów. Ty sam, bez angielskiego, bez wiedzy, zaczepiając kogoś na gg chcesz się za coś takiego brać?

Nie chcę przekreślać Twoich ambicji, nie o to mi chodzi - pisz tę grę, życzę Ci z całego serca powodzenia, ale ZANIM zaczniesz ją pisać - masz przed sobą mnóstwo innych rzeczy do nauczenia się i wiele projektów z jasnymi celami do zrealizowana.


0

spox, no z angielkskim jest problem, ale w c++ już robie sporo lat, a teraz się biore na razie za poznanie jak działają gry internetowe, bo w sumie wszystkie języki do tego znam. No może PHP w zbyt małym stopniu, dlatego ciągle się douczam. A po drugie to nie chce robić żadnej dużej gry, tylko domowy projekt dla satysjakcji i poznania ogólneo mechanizmu.

0

To po co w ogóle php? To jak używanie silnika z kosiarki w najnowszym Ferrari.

Weź taki libevent i napisz całość w c++, zapewne też znajdzie się trochę silników szablonów, np. ctemplate

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 18 godzin
0

@lubie placki, to nienajlepszy pomysł. Lepiej napisać to w czymś co stosuje się do aplikacji webowych (Ruby, Python, Java, C#) + jakiś message queue + worker. Przykładowe połączenie podałem. Wtedy najzwyczajniej w świecie, gdy ktoś wykonuje akcję w grze to masz informacje kiedy ona się skończy oraz worker w odpowiednim momencie wykona wszelkie potrzebne obliczenia. Używanie C++ jako samej apki to zły pomysł, jako workera to wciąż nienajlepszy, ale już bardziej inteligentny niż jako samą grę. Pamiętaj jednak, by komunikacja szła przez jakiś kanał "niewebowy" w sensie, by nikt nie mógł na nią wpłynąć, np. poprzez bazę danych (najlepiej chyba by była to baza KV, bo będzie najszybciej i najwydajniej).


0

musze sie chyba jednak porządnie dokształcić bo w ogóle nie rozumiem o czym do mnie mówiesz (message queue, worker ;p)
problem jest tylko taki, że mało gdzie o tym piszą, przynajmniej ja nic ciekawego nieznalazłem

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 18 godzin
0

Wygląda to mniej więcej tak:

  1. Użytkownik/gracz naciska przycisk odpowiedzialny za akcję mającą wystąpić w przyszłości (wysłanie wojska/wyruszenie na misję/etc.)
  2. Gra dodaje do bazy danych (message queue) wiadomość zawierającą wszelkie parametry potrzebne do wywołania funkcji (np. w formacie JSON)
  3. Zewnętrzny proces (worker) w odpowiednim momencie wykonuje zadaną akcję.

Prościej już chyba opisać się tego nie da.


0

Aha, dzięki teraz już o wiele więcej rozumiem ;) Jeśli jeszcze moge zapytać to:
gdy ten użytykownik naciska ten przycisk to mam rozumieć że wywołuje (np poprzez php) żądanie do bazy danych, które zapisuje np w tabeli actions, polecenie do wykonania przez tego workera. Natomiast worker pobiera z tej tabeli dany rekord i go przetwarza (wykonuje). tak? dobrze rozumiem?

PR
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:304
0

moje 3 lata na infie w liceum przerobiłem sam w rok w domu i to w gimnazjum :D i wiem jak każdy poważny użytkownik że bez eng się nie obejdzie, ty nawet nie masz pomysłu jak coś takiego zbudować... popatrz sobie na xnova (klon ogame) albo gladiatusa jest tego pełno, co prawda w PHP ale przecież możesz się nauczyć jak sam powiedziałeś :D, masz także coś takiego jak WebServices to podchodzi pod IIS windy choc pod apache też da się pisać, albo użyj jakiegoś prostego silnika HTTP na pewno są jakieś do C, ja przynajmniej 3 widziałem pod Delphi z tego co kojarzę to Synapse i ICS (z http://overbyte.be) mają takie silniczki. Chociaż najlepszym rozwiązaniem byłoby jak kolega wspomniał napisanie dllki pod apache albo użyć CGI czy pear


CodeGear Delphi 2007 | Windows 7 |
Jak to dobrze że istnieje opcja edytuj post ;]
0

no spox, ale to co napisałem w poprzednim poście to prawda?

PR
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:304
0

Zależy czego używasz i co chcesz stworzyć, ale z poziomu PHP to mniej więcej tak wygląda, jak dla gier typu ogame gdzie nie ma bezpośredniej interakcji między userami to styknie, ale minecraft czy runescape to za mało :D
Najpierw ustal co chcesz osiągnąć i jak jakich technologi chcesz użyć :D


CodeGear Delphi 2007 | Windows 7 |
Jak to dobrze że istnieje opcja edytuj post ;]
0

tak, no chodzi o gre pokroju ogame ogame. Jakbym miał się zabrać za minecrafta (oczywiście 1*10^10 razy gorszego) to myśle że bym sobie napisał serwa w c++ w całoci i jeśli klienkt miałby być c++ i korzystać np z open gl to myśle że dużo lepiej bym sobie poradził niz z nawet prościutką grą przeglądarkową.

dzek69
1 * 10^ 10 = 1 * 1000000000 = 1
PR
podstawy majcy :D
Wibowit
1 * 1000000000 = 1, nowa matematyka, prosto z zielonej wyspy :P
dzek69
omfg <facepalm>, co ja napisałem.. kasuje konto, co za wstyd -.- od jutra zero komputera po pracy
PR
nie bo pomocny jesteś (w większości przypadków)
PR
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:304
0

CodeGear Delphi 2007 | Windows 7 |
Jak to dobrze że istnieje opcja edytuj post ;]
0

dzięki, na pewno to przeanalizuje, chociać nie wiem od czego zacząć

Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0

Skąd wiecie ze ogame jest w czystym PHPie? Jak kiedyś w to grałem po zachowaniu miałem przynajmniej kilka powodów i podejrzeń żeby przypuszczać, że stoi tam jeszcze jakiś serwer i koordynuje wszystkie zdarzenia zależne od czasu. Tak to się robi profesjonalnie.

Co do kodu proqixa trzymałbym nieco dystansu, szczególnie ze względu na jego współczynnik reputacji na forum...


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 2x, ostatnio: Demonical Monk
PR
Wielkie dzięki za uznanie :D pisałem że to jest !!! KLON !!! prawdziwe ogame nie stoi na samym PHP bo server by nie wydolił na tyle graczy
Demonical Monk
To nie był akt uznania wobec Twojego kodu, tylko podkreślenie wagi poprzedniego akapitu :P
Demonical Monk
Gdybym robił klona to też PHP poszłoby tylko na frontend, żaden argument w sumie.
PR
ale to nie mój kod to po pierwsze, nawet nie chciało by mi się pisać tego w PHP prościej było by obić to w DLL pod IIS
0
winerfresh napisał(a):

Wygląda to mniej więcej tak:

  1. Użytkownik/gracz naciska przycisk odpowiedzialny za akcję mającą wystąpić w przyszłości (wysłanie wojska/wyruszenie na misję/etc.)
  2. Gra dodaje do bazy danych (message queue) wiadomość zawierającą wszelkie parametry potrzebne do wywołania funkcji (np. w formacie JSON)
  3. Zewnętrzny proces (worker) w odpowiednim momencie wykonuje zadaną akcję.

Prościej już chyba opisać się tego nie da.

Przepraszam za moją niwiedzę ale chciałbym się jeszcze o czymś upewnić.
"# Gra dodaje do bazy danych (message queue) wiadomość zawierającą wszelkie parametry potrzebne do wywołania funkcji (np. w formacie JSON)" - tzn że dodaje na końcu jakiejś tabeli rekord do wykonania?
i drugie. czym może być ten worker?

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 18 godzin
0

Koniec, początek, to nie ma znaczenia, w szczególności, że najlepiej użyć bazy, która nie ma czegoś takiego jak początek i koniec, ba nie ma nawet tabel.
Worker to dodatkowy proces, który zajmuje się tylko i włącznie pracą nad danymi, zero interakcji z użyszkodnikiem.


0

skoro nie ma końca to skąd worker wie który rekord preanalizować najpierw? i po przeanalizowaniu kasuje go? btw ten worker ma jeden wątek i przetważa rekordy jeden po drugim?

Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0

Po prostu - wykonuje zdarzenia które powinny się zdarzyć w aktualnym czasie. Nic więcej.


Women were the reason I became a monk - and, ah, the reason I switched back...
0

skoro nie ma żadnego porządku to skąd ma wiedzieć co akurat wykonać? niby może za każdym razem porównywać cok iedy się kończy czy coś ale to chyba nie będzie najwydajniejsze :/

Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0

Baza danych/kolejka/wtf powinna przekazywać te dane do workera w odpowiednim momencie, a jak to zrobi to już jej problem.


Women were the reason I became a monk - and, ah, the reason I switched back...
PR
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:304
0

@Demonical Monk
jemu właśnie chodzi o to jak to działa, koleś sobie klika buduj zamek i co dalej np wysyła to do servera, i np php dodaje sobie to do bazy danych że budynek się zbuduje CzasAktualny+1h i worker opiepsza bazę co sekundę i jak trafi na rekord o tej godzinie to go wykonuje, a kolesiowi i innym graczom się pokazuje że jest koxem bo sobie zamek postawił. (schemat który zaprezentowałem jest dość prymitywny, ale myślę że wystarczy)


CodeGear Delphi 2007 | Windows 7 |
Jak to dobrze że istnieje opcja edytuj post ;]
Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:11 miesięcy
0

Nie ma sensu do tego używać takiej bazy, którą będzie trzeba pytać co sekundę. Winerfresh linkował warte uwagi rzeczy.


Women were the reason I became a monk - and, ah, the reason I switched back...
PR
Ja nigdy nie zagłębiałem się w technologie gier więc nie umiem powiedzieć dokładnie, dałem taki prosty przykład jakbym zaczynał się w to bawić :D to taka pierwsza myśl
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)