Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tutorial] Piszemy własną grę w Node.js


Rekomendowane odpowiedzi

Opublikowano

Witajcie.

Z racji, iż sam wprowadzam się od Node.js postaram się w kilku częściach przygotować dla Was kurs tworzenia podstawowej gry właśnie w tym środowisku.

Czym tak właściwie jest node.js?

Node pozwala na uruchomienie i obsługę javascript po stronie serwera. Oparty jest na silniku V8 działa na nim między innymi Google Chrome.

 

Porównanie szybkości podstawowych obliczeń;

Node: Czas wykonania: 0 minut, 3.231 sekundy

var http = require('http');

function fibonacci(n) {
if (n < 2)
 return 1;
else
 return fibonacci(n-2) + fibonacci(n-1);
}

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type' : 'text/plain'});
res.end(fibonacci(40) + '');
}).listen(process.env.PORT, process.env.IP);

PHP: Czas wykonania 1 minuta, 13,902 sekundy.

Liczba jest: <?php
function fibonacci($n) {
if ($n < 2) {
 return 1;
} else {
 return fibonacci($n - 2) + fibonacci($n - 1);
}
}
echo fibonacci(40);
?>

Oba kody testowane w c9.

 

Nie będę pisał o instalacji node.js na serwerze, bo poradników w internecie są setki.

Kod live można przetestować na https://c9.io/. Bez instalacji mamy dostęp do serwera z obsługą (nie tylko) node.js.

 

Na początek, wyświetlmy podstawowe "Witaj świecie!"

var http = require("http");
http.createServer(function(req, res) {
res.end("Witaj świecie!");
}).listen(process.env.PORT, process.env.IP);

Require działa podobnie jak w przypadku php. W tym przypadku podłączamy bibliotekę do obsługi żądań http.

http.createServer to zwykłe utworzenie serwera. Przy nim deklarujemy funkcję obsługującą:

req - Żądania http

res - Odpowiedź http

Na chłopski rozum, dzięki req możemy dostać się do np. danych wysyłanych POST.

Natomiast dzięki res wyświetlimy treść / templatkę na stronie.

W parametrach listen podajemy Port i IP serwera.

Uczytelnijmy troszkę

var http = require("http");
var server = http.createServer(function(req, res) {
res.end("Witaj Świecie!");
})
server.listen(process.env.PORT, process.env.IP);

Po odpaleniu serwera z podaną treścią widzimy "Witaj Świecie!" bez jakichkolwiek jednak parametrów, jak je zatem wpisać?

Posłużymy nam funkcja writeHead(), dane jakie musimy jej dostarczyć powinny być w formacie JSON.

Aby uzyskać polskie znaki i kod HTML po stronie serwera piszemy:

res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});

 

Kod wygląda więc następująco:

var http = require("http");
var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
res.end("Witaj Świecie!");
})
server.listen(process.env.PORT, process.env.IP);

 

Jeżeli chcesz więcej - zostaw plusa. ;)

 

 

Autor; http://lionproject.eu - nie wyrażam zgody na kopiowanie tekstu bez wyraźnej informacji o autorze i stronie skąd pochodzi.

Opublikowano

node.js jest bardzo dobrym rozwiazaniem jako serwer gry/aplikacji gdzie ważna jest duża responsywność, w przypadku klikaczy czyli w zwykłym generowaniu kodu html, node.js jest kiepskim wyborem.

Specjalista
Opublikowano

Nie wiem, który freamwork JS jest dobry.

Ale jedno powiem ! że gry opierająca się na tej technologi(czynności po stronie przeglądarki) to kawałek dużego sukcesu :)

Opublikowano

Np gra Margonem ma silnik w c++ napisany na tej samej zasadzie co node.js :) Ja się borykam teraz bo nie wiem ile mogę wysyłać i przetwarzać zmiennych, aby było ok ? może ktoś wie?

 

  • 4 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...