Stało się. Zabrałem się za zgłębianie tajników PHP i pisanie własnego silnika MMORPG. Pierwszy raz zetknąłem się z Vallheru przy okazji gry cyrodiil.pl we wrześniu 2007 r. Tylko że Vallheru jest po pierwsze zakorzenione w realiach fantasy, a po drugie pomysły, jakie chodzą mi po głowie, wymagałyby tak daleko idących zmian, że szybciej będzie już napisać wszystko "od zera". Jest już paru zapaleńców, którzy gotowi są wspomóc pomysłami i dobrą radą, co ma skutkować powstaniem "nowatorskiego i świeżego spojrzenia" na sprawę, a co za tym idzie przeniesienia w sieć świata znanego dobrze z Fallouta. Oczywiście, system SPECIAL będzie wymagał wielu uproszczeń, ale tu chodzi o klimat;)
Sama nauka PHP nie stwarza wielu trudności - ot, trzeba się przystosować do nowej składni, czytać dokumentację. Błędów oczywiście nikt nie uniknie, ale skoro nieobce jest mi programowanie i algorytmika, to zostają tylko niuanse (których, nawiasem mówiąc, jest od groma) i nauka na własnych błędach, przekopywanie się przez to, co wypluje google... Już na samym początku natrafiłem na problem z obsługą ciasteczek. Niby wszystko było OK, a ciągle widziałem coś takiego:
Warning: Cannot modify header information - headers already sent
Ale przecież wstawiałem setcookie(); tam, gdzie trzeba - co więc u licha się dzieje? Na początku w naiwny sposób próbowałem bawić się z buforowaniem, ale też nic nie pomogło. W końcu, po przekopaniu kilkunastu wyników z google, udało mi się dotrzeć do istoty problemu.
Kodowanie UTF-8 dodaje na początku pliku tzw. BOM, który bruździł niemiłosiernie i PHP nie zezwalało na dalszą modyfikację nagłówków. Żeby się o tym przekonać, wystarczy stworzyć pusty plik tekstowy i zapisać go w UTFie. Chociażby używając do tego windowsowego Notatnika. Pusty plik będzie zawierał dokładnie 3 bajty (będą to EF BB BF.) A ja wszystko pisałem w UTFie... Na szczeście wspaniały edytor Notepad++ pozwala kodować w UTF-8 bez BOM. I jeszcze jedno "na szczęście": akurat UTF-8 nie wymaga BOM (w przeciwieństwie do UTF-16 i UTF-32) - więcej na Wikipedii.
A może jednak nie wolno w tym przypadku w ogóle używać UTFa? Wątpliwości rozwieją się z czasem, jak przyjdzie do pracy grupowej nad projektem i testów wersji beta;)
Na koniec zaś...
prace administracyjne na losowych serwerach. losowe usługi nie będą działać w losowym czasie.
Za to kocham Rootnode:)
"zammer" należy pisać z małej litery. Zawsze. Nawet, jak jest na początku zdania. Jest to swoista anomalia ortograficzna (więcej...)
Treść bloga zammerologia stosowana jest dostępna na licencji Creative Commons - Uznanie autorstwa 3.0.
Design by zammer, częściowo zainspirowany przez Zergalla. Fugue Icons by pinvoke.
Powered by JoggerPL.
hljeg surim mekten keudsme
Komentarze:
1. Tomipnh 29 kwietnia 2008, 02:18:37 [permalink]
MMORPG pasuje mi bardziej do gier typu Tibia.
Tu IMHO lepiej wygląda MMO/MMOG
2. zammer 29 kwietnia 2008, 02:20:03 [permalink]
Może być i MUD, jak kto woli;)
3. Tomipnh 29 kwietnia 2008, 02:20:30 [permalink]
Ja się tylko czepiam, późno już.
4. MySZ 29 kwietnia 2008, 07:11:07 [permalink]
"Kodowanie UTF-8 dodaje na początku pliku tzw. BOM"
Kodowanie nic Ci nie dodaje, to Twój edytor wstawia Ci BOM.
Ogólnie praca w UTF-8 w PHP jest raczej mało wygodna. Bez modułu mb nawet nie podchodź. Dopiero wersja 6 coś zmieni w tym temacie.
5. sf devblog 29 kwietnia 2008, 07:21:24 [permalink]
Korzystaj z UTF-8. Moduł mb jest na każdym hostingu.
6. teamon 29 kwietnia 2008, 08:14:22 [permalink]
Ale dlaczego akurat php? :/
7. BTM 29 kwietnia 2008, 11:13:28 [permalink]
A dlaczego nie? To nie dyskusja nt. przewagi Świąt Bożego Narodzenia nad Świętami Wielkanocy więc za przeproszeniem "sśj" ;p
8. Paweł Ciupak 29 kwietnia 2008, 13:37:16 [permalink]
Ech, tak myślałem, że zaraz kolejny fanatyk Pythona/Ruby/innego jezyka z poj*** składnią wyskoczy w komentarzach.
9. Hoppke 29 kwietnia 2008, 17:54:46 [permalink]
PHP wyczerpało limit poj*** języków dostępny w tym wpisie ;)
A na serio, to BOM i UTF-8 nie tylko w PHP brużdżą. Staram się unikać takiej kombinacji, żeby oszczędzić kłopotów ludziom, którym wysyłam pliki w UTF-8.
10. D4rky 29 kwietnia 2008, 18:37:25 [permalink]
klimat fallouta powiadasz? chyba ze 3x podchodzilem do napisania takiej gry i za kazdym razem brakowalo czasu i sil (pomyslow to az nadto)
system SPECIAL wymaga uproszczen? czlowieku, przeciez ten system jest jednym wielkim uproszczeniem =_="" gdybys ty widzial system, ktory ja projektowalem ;)
moze kiedys uda mi sie wreszcie napisac gre. moze. na wszelki wypadek nie pisze o tym notek i nie obwieszczam swiatu, bo i tak czesto brakuje mi potem checi
11. zammer 29 kwietnia 2008, 19:10:56 [permalink]
teamon: dlatego, że nie Ruby, które jest dwudziestokrotnie wolniejsze od Javy ;)
D4rky: bo tego nie robi się samemu. I trzeba pamiętać, że to ludzie tworzą klimat, a nie skrypt i mechanika. Poza tym „przenieść klimat Fallouta” to nie to samo co „przenieść Fallouta”.
12. teamon 29 kwietnia 2008, 21:09:20 [permalink]
Haha, kocham patrzec jak sie wszyscy od razu oburzaja :D Ludzie wyluzujcie troche…
13. Mruwek 30 kwietnia 2008, 00:38:50 [permalink]
UTF-8 jest ok i dobrze, że staje się powoli standardem. Mam nadzieję, że zamiast bałaganu tysiąca różnych kodowań będzie jedno uniwersalne.
Co do problemu opisanego w notce to wystarczyłoby w php.ini ustawić output_buffering na inną wartość niż Off. Zresztą praktycznie każdy dobry edytor kodu daje możliwość zapisu bez BOMa. W najlepszym edytorze po tej stronie planety (niech Święta Wojna Edytorowa się rozpocznie!) czyli Vimie, będzie to
set nobomb14. zammer 30 kwietnia 2008, 07:07:11 [permalink]
Mruwek: jasne, chętnie się przyłączę;) Ale jako zapalony windowsowiec używam wspomnianego wyżej Notepad++, opartego na Scitnilli
Dodam do tego jeszcze Świętą Wojnę Przeglądarkową i wykażę Wyższość Opery Nad Frajerfoxem. I Świętą Wojnę Systemową, bo lubię swojego podpimpowanego WinXP, który ma lepszy uptime niż niejeden Linux. Jeszcze jakieś propozycje Świętych Wojen? ;)
15. btm 30 kwietnia 2008, 08:03:40 [permalink]
Tak, nie używaj Notepada++, kup Zend’a, ostatecznie użyj Eclipse jak masz nerwy ;-)
16. mruwek 30 kwietnia 2008, 15:40:20 [permalink]
@zammer: Z opartych na Scintilli wolę i od czasu do czasu w mniej zaawansowanych kwestiach używam Scite. Ten sam autor co Scintillę napisał.
Nie wiem nad czyimi Linuksami masz lepszy uptime, ale prowokujesz gro linuksiarzy by ów Twój „lepszy” zepchnęli w przepastne otchłanie zapomnienia za pomocą swoich.
17. Hoppke 30 kwietnia 2008, 15:42:55 [permalink]
Tak, bo linuksiarze bardzo łatwo dają się sprowokować do przechwałek „a ja i tak mam dłuższego!”.
PS: Też bardzo lubię Notepad++. Znakomity niewielki edytor tekstu.
18. mruwek 30 kwietnia 2008, 15:47:20 [permalink]
Hoppke: to nie tak. Po prostu ludzie używający kompa jako stacji roboczej wyłączają go co jakiś czas i nie ma się czym chwalić w zasadzie. Ja sam mam w tej chwili raptem po wpisaniu
uptimedostaję 40 minut. Myślę, że znalazłaby się jednak grupka administrująca serwerami, która przyszłaby ze swoimi upami i zrobiła tu porządek w kwestii tego „kto ma dłuższego”.Ps. Sprawdź Scite.
19. btm 30 kwietnia 2008, 15:48:05 [permalink]
@mruwek: coś w tym stylu? ;-)
bash-2.05$ uptime 3:59pm up 211 day(s), 16:13, 6 users, load average: 0.68, 0.70, 0.73
20. mruwek 30 kwietnia 2008, 15:49:17 [permalink]
btm: coś około ;)
21. Hoppke 30 kwietnia 2008, 15:55:23 [permalink]
@mruwek: scite znam. Większość developerów u mnie w firmie go używa (ja z notepadem jestem w zdecydowanej mniejszości — no ale jakoś wolę n++. Może dlatego, że praktycznie z defaultu ładnie podświetla aktualny wiersz/akapit, a to mi się bardzo przydaje w tłumaczeniach tekstów)
BTW, ja mojego Windowsa zwykle hibernuję (albo na dysk, albo do ramu — to ostatnie działa mi naprawdę zarąbiście)
PS: IMO uptime powinno się mnożyć przez LoadAV. Bo uptime maszyny która tylko rutuje ruch między parę komputerów to jednak co innego, niż uptime bazodanowego serwera obsługującego masę transakcji na sekundę...
22. D4rky 30 kwietnia 2008, 17:57:11 [permalink]
Moj piec jest za glosny i za blisko glowy, zeby robic konkursy na uptime :D
23. Hoppke 30 kwietnia 2008, 18:00:45 [permalink]
Dlatego moja obecna karta graficzna ma pasywne chłodzenie (jakieś GF 8500 czy 8600). Wydaje mi się, że wiatraki na kartach są zawsze najgłośniejszym elementem…
24. D4rky 30 kwietnia 2008, 18:01:11 [permalink]
Hoppke – moja tez ma pasywne. Procek wyje
25. Hoppke 30 kwietnia 2008, 18:05:35 [permalink]
Uuu, taki potwór z niego?
...mój prawdę mówiąc też jest ciut głośniejszy niż na początku, ale jeszcze nie jest źle — tym bardziej że to box-owy wiatrak — jak mnie wkurzy, to kupię sobie jakiś wolnoobrotowy wiatrak 120mm i założę na nim. Zresztą mój obecny procek nie potrzebuje chyba super-wydajnego chłodzenia (to tylko AMD 64×2@2GHz, chyba niespecjalnie się grzeje).
Dodaj komentarz: