Jak zrobić browserówke, być może dziwne pytanie

0

Witam, ostatnio natchnęło mnie żeby zrobić jakąś browserówke, taką typu gladiatus, knights.pl, smoki nightwood jeśli ktoś pamięta takie gry czy może coś typu Shakes & Fidget (zara o tym).

Nauczyłem się w moim mniemaniu dobrze HTML i CSS (wow) no to wziąłem się za PHP, MySQL i JS tera.
I mam teraz pytanie, czy dobrze rozumiem działanie takowej gry przeglądarkowej:
Loguję się i za pomocą PHP przekazuje danę z bazy do obiektu JS character, który zawiera dane takie jak nazwa, doświadczenie, złoto.

Używam przykładowej funkcji wyprawa, która dodaję losową ilość doświadczenia i złota, obiekt character się aktualizuje i wysyła dane za pomocą php do bazy danych.

Czy połączenie PHP i JS, w takich grach jest stosowane?

Odnośnie tego Shakes & Fidget, to z tego co wiem jest to zrobione we flashu a robiłem troszke w grafice wektorowej i potrafiłem zrobić jakieś ciekawe animacje, więc później chciałbym te umiejętności jakoś wykorzystać. Bez wyzywanie proszę :D

1

Dobrze kombinujesz. Porobisz jakieś timery, limity akcji na postać i będzie działać. Sam kiedyś troszkę grywałem, ale nazwy nie pamiętam (wilkołaki vs wampiry)

2

Czy połączenie PHP i JS, w takich grach jest stosowane?

Owszem, może być.

Tylko pamiętaj, że PHP to serwer a JS to przeglądarka, dwie niezależne rzeczy, więc do komunikacji między nimi będziesz musiał użyć np. AJAXu.

Z drugiej strony jeśli i tak musisz już pisać to w JS (po stronie przeglądarki), to równie dobrze mógłbyś backend pisać w NodeJS (zamiast w PHP), wtedy ten sam język masz na serwerze i w przeglądarce.

0

Dzięki serdecznie za odpowiedź.
@Edit ktoś może się o tych silnikach wypowiedzieć?
https://html5gameengine.com

2

korzystałem z:
Three.js - fajna biblioteka do 3D, relatywnie łatwo się robi różne rzeczy (to znaczy łatwo w porównaniu do tego, jakbyś w ogóle nie używał biblioteki i chciał pisać w czystym WebGL)
Phaser - popularny framework do gier, dużo przykładów, mocne community. Aczkolwiek mieli nową wersję wypuszczać pisaną od zera i nie wiem, w jakim jest to stanie (a dawno nie używałem).
Pixi - biblioteka do grafiki 2D w JavaScript, API podobne do flashowego
Cocos2DX - pisałem w tym kilka lat temu i było to złe doświadczenie. Dokumentacja była bardzo słaba

tylko słyszałem o:
ImpactJS - niegdyś komercyjny framework, teraz udostępnili go jako open source z tego co wiem
(o innych też coś słyszałem, ale nie umiem nic o nich powiedzieć)

Poza tym tu masz forum dyskusyjne o silnikach graficznych / do gier w JS: http://www.html5gamedevs.com/

0

Dzięki serdecznie jeszcze raz, to PixiJS oferuję ciekawe przykłady.

0

Dobra mam pytanie i prośbę o pomoc. Jak byście zrobili system przedmiotów? Ten co mam teraz, jest bardzo upośledzony. Więc robie od nowa, chce żeby miało to teraz chociaż mniej więcej - ręce i nogi (wiadomo, jestem początkujący)
Otóż ja, pomyślałem tak, że plecak byłby tablicą, metodą push dodawały by się tam kolejne przedmioty (oczywiście miałby tam jakiś limit, np 10 slotów).
Przedmioty by znajdowały się w obiekcie character (wszystko robie tylko w js póki co)

var character = {
name: "Jack",
level: 50,
experience: 14785,
basicstrenth: 250,
...
helmetstatus: "equipped",
helmetid: 2156,
helmetname: "Dark Helmet",
helmetstrength: 10,
...

totalstrength: this.basicstrength + this.helmetstrength + [....]
}

Plecak:

var backpack = [2150, 9412, 1119, 114];

funkcja zdjęcia hełmu, chciałem tu użyć parametrów, by dodać od razu do każdej części ekwipunku, ale już jestem tak zagmatwany.

function takeOffhelmet () {                         //po naciśnięciu na przycisk ("zdejmij", koło hełmu)
if (characterhelmet == "unequipped") { 
          nie rób nic}                          //np checkstats(), wiadomo jakieś komunikaty co dlaczego, ale na razie mi to nie potrzebne

else if (backpack.length == 10) {
          też nic)

else if (backpack.length < 10 && character.helmetstatus == "equipped") {          
          backpack.push(character.helmetid);
          character.helmetstatus = "unequipped";
          character.helmetid = 0;
          character.strength = 0;
...
           checkstats()          //odświeża statystki (totalstrength, totalvitality itd); używam tu innerHTML, wszystko jest w postaci tekstowej przedstawione na stronie
}

Dobra, niech ktoś to sprawdzi, jeśli może, czy to ma sens. ID w plecaku później użyje, żeby móc zakładać przedmioty, czy ich używać (jeśli coś innego niż część ekwipunku).

1

Ale przeciez w atrybuty obiektu mozesz wpisac inny obiekt, wiec zamiast X pol dotyczacych jednego slotu dajesz slot (np na helm) i w nim siedzi helm, ktory ma swoje atrybuty. Tylko niech wszystkie przedmioty mozliwe do wlozenia na ten slot beda zgodne z "interfacem"

0

Dzięki za odpowiedź!
Nie do końca zrozumiałem o co ci chodzi. Rozumiem, że mam zrobić pusty obiekt characterhelm i po użyciu equip jakiegoś hełmu np. dark helmet przenosi on swoje atrybuty do obiektu characterhelm?

1
var character = {
    name: "Bobby",
    ...
    helmet: {
        armorValue: 90,
        ....
    }
}

i pozniej character_instance.helmet = other_helmet;

0

Witam, zrobiłem krótką przerwie i po powrocie wiem czego nie wiem.
@Edit chodzi mi o php
Może jest jakaś miła osóbka, która dała by jakieś zadanie, gdzie można by było użyć najpopularniejszych obecnie funkcji** W PHP**?
Jeśli kogoś interesuje dlaczego: Potrzebuję po prostu jakiegoś przykładu, który utkwi mi głowie; tak sobie zapamiętuje i przypominam różne rzeczy, dla mnie kwestia nauki to dobry przykład i zadanie, po którym dużo zapamiętam. Od tego jest forum, żeby pomagać, a podać komuś zadanie to chyba nie problem.

(zadanie np. zrób stronę apteki, gdzie można zamawiać leki itd, liczę na coś kreatywnego, GDZIE wykorzystam najpopularniejsze funkcje).
JS Katowałem, ale to jakoś prosto i przyjemnie że tak powiem szło, a php wygląda dla mnie strasznie, działam powoli bo wiadomo praca, w weekendy ciężko jest się zmobilizować.

0

@naisyrk w kazdym projekcie i problemie mozesz uzywac najpopularniejszych funkcji. To ze Ty tego nie robisz, to wiesz...

Prosty przyklad. masz 3 stringi które chcesz dodać do siebie

mozesz to zrobic tak

var result = '';
for (i=0 ; i<3 ; i++) {
  switch(i) {
    case 1:
      result += string1;
      break;
    case 2:
      result += string2;
      break;;
    case 3:
      result += string3;
      break;
  }
}

mozesz to zrobic tak

string1 + string2 + string3

a mozesz zrobic tak

var result = StringBuilder(string1, string2, string3);

troszke pomieszalem jezykow wiec traktuj kod jako pseudokod

i teraz wytlumacz mi, jak projekt czy dany problem ma Cie zmusic do ktoregokolwiek z tych trzech podejsci?

0

Dobra, może źle napisałem, nie najpopularniejsze aaa.. brak mi słów.
Chciałem żeby ktoś dał mi jakieś zadanie, żeby sprawdzić swoje możliwości. Może tak to lepiej brzmi.
I bez żadnych offtopów, że ty to, tamto itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1