Jaka technologia do napisania strony z grami typu kurnik.pl?

0

Tak jak wyżej w temacie, w czym najprościej napisać takie gry jak na kurniku? Słyszałem, ze backend kurnika napisali w Javie, ale widzę tam serwer nginx który pasuje bardziej do PHP.

0

Front pisali w Javie. Applety to były...

Ale na kurnik to nawet się nie oglądaj. Lepiej brać przykład z BGA. https://pl.boardgamearena.com/

Łatwo się raczej nie da. Trzeba trochę ogarnąć technologii i sporo zakodować.
Websockety, reprezentacja graficzna, jakieś zapisywanie stanów gry w bazie danych itd...

1

Tutaj w czym jest napisana moja ulubiona strona do rozgrywek szachowych - Lichess. Wiec jak dla nich sie sprawdza to w innym przypadku pewnie tez patrzac na skale projektu :)

I made a lot of mistakes, as one should - ok, maybe more than that. I don't really have much regrets though.

The whole thing used to be built in PHP, which was not the best choice (at least back in the days) for a gaming server. I took some time rewriting it all in scala.

The client-side has been rewritten a number of times with different technologies and languages: first raw JS w/ jQuery, then ClojureScript, then ClojureScript w/ React, then a number of ClojureScript react wrappers. Then back to JS. I decided that, while Clojure is a fantastic language, running it in a browser had performance impacts that are not compatible with lichess as a light chess UI. Mostly script parsing time, then conversion of JS arrays at runtime. So, back to JS, rewriting this time with mithril.js. Then another rewrite with snabbdom. And then rewrite again to TypeScript (w/ snabbdom), because types are good.

So yes, I tried many things that didn't work out. But instead of piling up tech debt, I chose to take the time to rewrite things over as many time as needed, to ensure a reasonably maintainable codebase that loads and runs fast on everyone's browser.

It also happens that I eventually trash a feature I spent weeks building. For instance, relaying tournaments using FICS as a source. It turned out to be very tricky and not reliable enough.

On the other hand, some important tech choices I made a long time ago are still relevant, and that's very lucky. Namely mongodb as the main database, and scala as the main backend language. I'm glad these are still going strong.

1

// edit: uzupełniam @WhiteLightning

kurnik? to ktoś tego jeszcze używa? To chyba nie rok 2000...

Jak mowa o roku 2019, to np. lichess.org jest napisany w Scali (backend), na froncie to pewnie jakieś JSowce, czyli normalka, Stockfish (C++) jest zapinany przez webasm lokalnie (chess.com pewnie też). Generalnie jest to kawał stacku i nic trywialnego - każda partia to osobny zegar (pewnie JS, ale musi od czasu do czasu "konsultacje" robić, zestaw reguł (obstawiam JS), ale też taki stockfish musi iść w parze, co by wyłapać cziterów (to już na backendzie pewnie i przy niektórych ważniejszych partiach)
Nawiasem mówiąc, w sumie jestem mega pozytywnie zaskoczony jak to świetnie chodzi i że jest za darmo - mowa tutaj zwłaszcza o backendzie, bo jak oglądam turnieje grane w tym samym czasie nawet na jakichś kozackich czasach typu 15/30 sek na partie, no po prostu rozwala mózg, że coś takiego tak dobrze (bezbłędnie i szybko) działa i jest za free. Naprawdę muszą tam ciekawe wykminy mieć na backendzie, aby ruchów nie wstawić do złej partii lub zegarów nie zmotać.
IMHO ten projekt robi znacznie więcej dobrego PRu Scali niż filmy, które @jarekr000000 wrzuca, gdzie szamani wywołują duchy nad ogniskiem. :D
Tu masz repo jakbyś chciał sam postawić: https://github.com/ornicar/lila

Co do chess.com, to wiem tyle, że tam z kolei dużo Javy i MySQLa jest. Interfejs się bardziej lubi kisić niż ten na lichess, ale generalnie ten serwis też stoi na bardzo wysokim poziomie. To ma 100 pracowników, z czego 1/5 to engineering pewnie, więc też nic trywialnego.

0

Ale jak jest nginx to nie może być na backendzie Java? Nikt nie wie w czym jest napisany kurnik? Rozumiem, że polecacie te inne lepsze, bardziej rozbudowane strony z grami, ale wybrałem kurnik bo wydaje się najprostszy i nie ma dużo gier do napisania.

0

Front to jakiś JS a backend? Co za różnica? :) Może być napisany w czymkolwiek, od asemblera i COBOLA po Ocamla i Prologa

2

Z tego co kiedyś czytałem to Node.js ponoć dobrze sprawdza się pod względem prędkości w stosunku do konkurencji do takich aplikacji w czasie rzeczywistym, jak czaty, gry, komunikacja między userami. Warto poczytać.

1
meaoen napisał(a):

Z tego co kiedyś czytałem to Node.js ponoć dobrze sprawdza się pod względem prędkości w stosunku do konkurencji do takich aplikacji w czasie rzeczywistym, jak czaty, gry, komunikacja między userami. Warto poczytać.

W sensie takie czytałeś?

https://hashrocket.com/blog/posts/websocket-shootout
https://stressgrid.com/blog/benchmarking_go_vs_node_vs_elixir/
https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go

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