Jednoduché použití APCu cachování ve Vašich projektech a triviální DDOS “ochrana” (PHP)

Simple APCu caching in your Project & nonCDN BruteForce protection

I beca­me obsessed with RAM caching and i try to keep pushing eve­ry sin­gle mil­li­se­cond down. (Whi­le tal­king about thou­sands of requests per second, eve­ry mil­li­se­cond mat­ters). Here is an exam­ple of caching rare­ly chan­ging json file. I tried to keep it cle­an for rea­da­bi­li­ty when quick­ly loo­king throu­gh code and as quick as possi­ble (per­for­man­ce).

TORs Online 13.02. DevLog

Scre­en­shots 13.02.2016

01 02 03 04

Povět­ši­nou jsem vylep­šil vizu­ál­ní strán­ku ren­de­ru sek­to­ru. Laten­cyme­ter (Ping) bývá zkres­le­ný výko­nem syn­chron­ních úko­nů před real­nou ode­zvou ser­ve­ru, tudíž spíš než reál­nou ode­zvu ser­ve­ru, měří čas před volá­ním až po úspěš­ném při­je­tí — při niž­ším CPU (i GPU) výko­nu na vyš­ší detai­ly, tudíž může jít do vyso­kých čísel.
Toto bych nena­zval pří­mo “bugem” a zatím neza­mýš­lím řeše­ní, aby laten­cyme­ter měřil oprav­du pou­ze ode­zvu ser­ve­ru.

Zkrášle­ní” User Inter­fa­cu (při­hlá­še­ní / regis­tra­ce), vylep­še­ní + při­dá­ní nových spri­tů.

Video 05.03.2016

Video 08.02.2016

 

Herní projekt (“TORs”)

01.02. 2016 Scre­en­Shot

  • MMORPG hra zalo­že­na čis­tě na HTML, CSS, JS+jQuery se sys­té­mem taho­vé­ho boje.
  • JRPG styl, PVE (solo/skupiny po 3/dungeony/boss),PVP(casual/ranked/3v3? + offli­ne a liveP­VP)
  • Prav­dě­po­dob­ná pod­po­ra a funkč­nost na všech sys­té­mech. (WIN, OSX, Linux, IOS, Andro­id + Kon­zo­le?)
  • Hra ve sty­lu “Pixel art”, mož­nost pře­pnu­tí na “hez­čí gra­fi­ku” — lep­ší efek­ty poča­sí, 3D efekt svě­ta s per­spek­ti­vou — ne pou­hý pohled ze zho­ra dolů
  • Obsa­hu­je jed­no hlav­ní řídí­cí html, kte­ré je ovliv­ně­no řídí­cí­mi javascrip­ty, kte­ré se doká­žou vzdá­le­ně volat navzá­jem a spouš­tět i s funk­ce­mi.
  • Ve hře teo­re­tic­ky nebu­de mož­né vůbec pod­vá­det, pro­to­že uži­va­tel peri­o­dic­ky čte kaž­dou vte­ři­nu stav hry ze ser­ve­ru (zatím sluš­né script rych­los­ti TTFB 50–100ms PHP7 free hos­ting endo­ra).
  • Hlav­ní řídí­cí algo­rit­mus ser­ve­ru pobě­ží také jed­nou za vte­ři­nu (rozu­mě­no — ser­ver bude “1 tick”)
  • Jed­no­du­chý bru­te-for­ce pre­ven­ter + nut­nost auto­ri­za­ce kaž­dé nové ip adre­sy přes mail — neau­to­ri­zo­va­né ip mají limit PHP reques­tu 1 za 5 sec (zatím nezjiš­tě­no nega­tiv­ní ovliv­ně­ní TTFB)
  • Všech­ny infor­ma­ce o hrá­čích, pro­ve­de­ných bojích, tra­dech atd (prak­tic­ky všech­ny akce) budou ulo­že­ny a zlib kom­pri­mo­vá­ny, peri­o­dic­ká zálo­ha kaž­dý den pro mož­ný roll­back
  • DB pou­ži­tím json sou­bo­rů, hes­la jsou kryp­to­vá­na bcrypt, hráč po při­hlá­še­ní obdr­ží login token plat­ný pou­ze k aktu­ál­ní IP, ten pou­ží­vá mís­to hes­la k pří­stu­pu čte­ní “gamesta­te” a zasí­lá­ní akcí — při poku­su o pří­stup z neau­to­ri­zo­va­né IP — mož­ný hac­ker by mohl tre­fit token k loginu(velice neprav­dě­po­dob­ně frek­ven­cí 1pokus za 5 vte­řin) — dojde k vyma­zá­ní toke­nu z data­bá­ze a uži­va­tel bude vyzván, aby se zno­vu při­hlá­sil a auto­ri­zo­val (vyge­ne­ro­vá­ní nové­ho toke­nu)
  • Mapa svě­ta — vlast­ním PHP nástro­jem je svět z obráz­ku png(2000x2000), pře­ne­sen na svět ve for­má­tu json. Svět je roz­dě­len na 1600 [50x50] sek­to­rů ~7.33kB -> ~11,728MB celý svět, sek­to­ry se budou uži­va­te­lům cacho­vat pro odleh­če­ní dato­vé nároč­nos­ti
  • Free hos­ting jako Endo­ra (PHP7), by měl teo­re­tic­ky výko­nem zvlád­nout 200 mož­ná až 1000 lidí onli­ne — vyzkou­ším

 

Per­so­nal notes:
(most of the time just stuff that comes to my mind during a day and i “wri­te it down” via my pho­ne)

Levels:1–10 (to start with)
XP to level:8,12,18,27,40,60,90,135,200
killXP:25% +/- for each level dif­fe­ren­ce

Tra­de double hand­shake — after agre­e­ing to tra­de, you will have to agree once aga­in to can­cel out possi­ble scams.
Weather,Day/Night Cycle, Light/Shadows (sha­dow inset), rain, clouds, storms, weather affecting com­bat, lowered visi­bi­li­ty?