2 पॉइंट द्वारा GN⁺ 2023-08-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • इसमें Quake II 2023 री-रिलीज़ संस्करण का गेम कोड और संदर्भ के लिए मूल गेम कोड शामिल है, जो उपयोगकर्ताओं को गेम को mod करने के लिए source code उपलब्ध कराता है
  • mods को मूल गेम की तरह ही री-रिलीज़ संस्करण में लोड किया जा सकता है; लॉन्च के समय +set game mymod का उपयोग करें या चलते समय console में game mymod दर्ज करें
  • मूल गेम फ़ाइलों में बदलाव से बचने के लिए mods को %USERPROFILE%\Saved Games\Nightdive Studios\Quake II डायरेक्टरी में इंस्टॉल करने की सिफारिश की जाती है
  • री-रिलीज़ संस्करण server और game module के बीच संचार के लिए नया API उपयोग करता है, और पहले hardcoded client behavior को बदलने के लिए Quake III Arena के cgame module जैसा एक हल्का client game module पेश करता है
  • codebase मूल गेम के baseq2, ctf, rogue, xatrix game modules को जोड़कर बनाया गया है, और इसके लिए C++17 compiler आवश्यक है
  • compilation केवल Clang, VS2019, VS2022 पर test किया गया है, और यह C++17 तथा C++20 दोनों में compile हो सकता है; C++20 उपयोग करने पर fmtlib dependency छोड़ी जा सकती है
  • dependencies हैं fmtlib और jsoncpp, और इन्हें vcpkg install jsoncpp:x64-windows fmt:x64-windows से install किया जा सकता है
  • री-रिलीज़ संस्करण की DLL में मूल expansion pack maps सही तरह से load न हों, क्योंकि कुछ मामलों में टकराने वाले spawnflags की समस्या हल करने के लिए maps को संशोधित किया गया है
  • मौजूदा mods को game export interface में हुए बदलावों के अनुरूप port किया जा सकता है, लेकिन सभी expansion packs को एक codebase में support करने और नई सुविधाओं को दर्शाने के लिए structure और layout में बड़े बदलाव हुए हैं, इसलिए नया codebase उपयोग करते समय दोबारा लिखना पड़ सकता है
  • game DLL के अंदरूनी logic को मूल engine के 10hz की जगह 40hz tickrate के लिए समायोजित किया गया है; 25ms step granularity और bandwidth तथा CPU संबंधी विचारों के बीच संतुलन के कारण 40hz चुना गया
  • save system अब pointer offsets और memory copies के बजाय level और game data को UTF-8 JSON में लिखता है, और save system अब filesystem के साथ सीधे interface नहीं करता
  • Quake II री-रिलीज़ संस्करण server protocol version 2023 का उपयोग करता है; अधिकांश messages backward compatible हैं, लेकिन नई सुविधाओं, बदली हुई सुविधाओं और बढ़ी हुई limits के लिए कुछ समायोजन किए गए हैं
  • id Software इस release के लिए support प्रदान नहीं कर सकता, और community-driven resources का उपयोग करने की सिफारिश की जाती है

1 टिप्पणियां

 
GN⁺ 2023-08-11
Hacker News की टिप्पणियाँ
  • Quake II मेरा पहला अनुभव था जिसमें मैंने C लिखकर देखा था
    कोड साफ़, consistent और सीधा था; यह नहीं कहूँगा कि वह अब तक पढ़ा मेरा सबसे अच्छा source था, लेकिन उसने benchmark ऊँचा कर दिया। बाद में मैंने कई game sources में अजीब कोड देखा—screen के दाएँ किनारे से भी आगे निकलती nesting, ढेरों काम करने वाले विशाल functions—और यह शुरुआती सीख मिली कि simple code से भी शानदार चीज़ें बनाई जा सकती हैं
    1990s के आखिर से 2000s की शुरुआत तक मैंने Quake और Quake II के ज़रिए बच्चों को VR classes कराईं। VR headsets और Q.E.D. या Qoole installed कुछ PCs रखे, और 12–14 या 14–18 साल के students से अपना खुद का virtual reality game बनवाया
    असल में वे Quake/Quake II के ऐसे levels बनाते थे जिनमें monsters या guns नहीं होते थे, और level के अंदर triggers से screen messages दिखाकर कहानी सुनाई जाती थी। एक team ने slime पार करने और button से pump चालू करके slime निकालने वाला level बनाया; दूसरी team ने space में तैरती हुई पानी की 3D maze बनाई, जिसमें तैरकर निकलना था। कुछ student-made levels अभी भी मेरे hard disk पर हैं, लेकिन कुछ ठीक से चलते नहीं हैं
    class के लिए मैंने एक mod बनाया था जिसमें blaster की जगह flare gun दी जाती थी। मूल रूप से वह blaster ही था, लेकिन sound effects अलग थे, weapon model नहीं था, और projectile gravity से प्रभावित होकर bounce करता था और कुछ समय बाद बुझ जाता था। अगर आप उस class में होते, तो शायद headset आज़माने को न मिला होता, क्योंकि वह हमेशा ठीक से काम नहीं करता था

    • id का code निश्चित रूप से clean और अच्छी structure वाला है, लेकिन आम लोगों के लिए उसे समझना काफ़ी मुश्किल था
      functions के अंदर comments अपेक्षाकृत कम हैं, और 3D graphics की गहरी समझ न हो तो अक्सर cipher जैसी expressions चौंका देती हैं। Carmack जैसे industry leader का output है, इसलिए यह स्वाभाविक भी है, लेकिन confidence के साथ follow करने के लिए बहुत सारा prior knowledge और कुछ हद तक mathematical inclination चाहिए
    • मैं भी ऐसा code लिखने का दोषी हूँ
      पहले मैं लगातार macaroni code लिखता था; 25 lines का code बारह तरह के features का ढांचा बन जाता, और फिर उसके ऊपर बारह और चीज़ें चढ़ जातीं। execution बहुत तेज़ होता था, लेकिन technical debt तेज़ी से जमा होती थी, और आखिर में वे functions ऐसे हो जाते कि उन्हें छूने पर ऊपर रखी बहुत सारी चीज़ें टूटने का खतरा रहता, इसलिए उन पर हाथ नहीं लगाया जा सकता था
      comments से समझाने की कोशिश की, लेकिन communication अच्छा नहीं था, इसलिए सिर्फ़ यह लिखता था कि function क्या करता है, यह नहीं कि वह कैसे काम करता है। जैसे “SINE table processing”, “table defragmentation”, “binary interpretation” वगैरह। सब कहते थे, “ये आखिर है क्या? लेकिन तेज़ तो बहुत है,” और अगर यह videogames के अलावा किसी और field में होता, तो शायद न मैं टिकता, न product
    • अगर आपको id code पसंद है, तो John Carmack on Inlined Code (2014) भी पसंद आ सकता है: https://news.ycombinator.com/item?id=12120752
    • मैंने id Software के source में गहराई से कभी नहीं झाँका, लेकिन सचमुच भयावह game source बहुत देखे हैं। baseline बेहद नीचे है
      यह देखकर हैरानी हुई कि सफल, मज़ेदार और पर्याप्त stable games पर्दे के पीछे पूरी तरह disaster जैसे code के साथ ship हुए थे। अगर इतना बेतरतीब जोड़-तोड़ वाला trash भी पर्याप्त पैसा कमा सकता है, तो chaos रोकने में लगाया मेरा effort और समय कभी-कभी सवालों में पड़ जाता है
    • अच्छा होगा अगर आप इस class के outcomes के screenshots share कर सकें। यह सच में बहुत cool लग रहा है
  • इस हिस्से पर हँसी आ गई: https://github.com/ESWAT/john-carmack-plan-archive/blob/mast...
    31 जनवरी 1997 के John Carmack के .plan में लिखा है कि वे नई F355 को “reasonable” car के तौर पर खरीदने Ferrari dealership गए थे, लेकिन सामने रखी F40 देखकर आखिरकार वही खरीद ली। आगे उन्होंने यह plan भी लिखा कि अब Ferraris बहुत ज़्यादा हो गई हैं, इसलिए अपनी पहली Ferrari को Quake tournament के winner के prize के तौर पर देंगे
    prize 1987 model 328 GTS turbocharged था, जो जनवरी 1994 की Turbo magazine में featured था; chassis dyno पर rear wheels पर 360 horsepower देता था, नया engine और नई paint job थी, लेकिन interior में कुछ काम बाकी था। वे taxes और insurance संभालने के लिए cash भी साथ देने वाले थे

    • potential buyer आने वाला है? तो F40 को संयोग से entrance के ठीक पास खड़ा कर देते हैं
  • Quake II से जुड़ी एक बात बताऊँ तो, Quake II पहला first-person shooter game था जिसे मैंने शुरू से अंत तक पूरा किया
    गर्मियों में दूसरे state में रहने वाले दोस्त से मिलने गया था, तब एक हफ्ते तक खेला; वरना शायद मुझे इसकी अनुमति कभी नहीं मिलती। शुरुआत में मैंने पहले सिर्फ़ DOOM खेला था, इसलिए वही controls इस्तेमाल किए, और हैरानी की बात है कि वे काम कर गए, इसलिए बिना ज़्यादा सोचे आगे बढ़ता गया
    फिर अचानक viewpoint ceiling पर lock हो गया और मैं पूरी तरह confused हो गया। पता चला कि मैंने mouse छू दिया था, और काफ़ी देर छेड़छाड़ करने के बाद mouse-look controls की concept समझ आई। उसके बाद game बहुत आसान हो गया
    internet नहीं था, न मुझे और न मेरे दोस्त को mouse-look controls का पता था, और हमने किसी को real 3D FPS खेलते हुए भी नहीं देखा था। अब knowledge इतनी widely spread है कि उस समय game interfaces कितने अजीब और alien लगते थे, इसकी कल्पना करना मुश्किल है। source code public हुआ, यह देखकर अच्छा लगा

    • अगर आपको पता न हो, तो यह Quake II rerelease source code है। original Quake II source code कई साल पहले से public था[0], और id Software के कई classics भी साथ में public हैं[1]
      [0]: https://github.com/id-Software/Quake-2
      [1]: https://github.com/id-Software
    • मुझे वह समय याद आ गया जब मैंने पहली बार कई लोगों को LAN पर FPS खेलते देखा था
      करीब 1999 में मैं Rome, Italy के ComicCon में था; Half-Life बस gold master में गया था और multiplayer demo public हुआ था। कम से कम 20 लोग सभी LAN multiplayer Half-Life खेल रहे थे, और mouse भी इस्तेमाल कर रहे थे। वह पागल कर देने वाला नज़ारा था
      उसके बाद 2005 तक मैं ढेर सारी LAN parties में गया, लेकिन online matchmaking ने QuakeNet और social culture को खत्म कर दिया
  • आह, यादें ताज़ा हो गईं
    1999 में Quake II वही गेम था जो मैं खेलता था, सच कहें तो लगभग इकलौता गेम। मैंने QII में बहुत ज़्यादा समय लगाया, और mod बनाने के दौरान अपना पहला code लिखा
    यह कहना अतिशयोक्ति नहीं होगा कि Quake II ने मुझे computer user से programmer बना दिया। इसने मेरी वयस्क ज़िंदगी और career की दिशा तय कर दी
    अपना पहला mod बनाते हुए मैंने vector calculations, मौजूदा codebase को समझना, और तेज़ testing के लिए automated builds को integrate करना सीखा। Map बनाने और 3D art में भी थोड़ा हाथ आज़माया, लेकिन जल्द ही समझ गया कि मैं artist या designer नहीं हूं
    उस समय version control और backup policy बिल्कुल नहीं थी, इसलिए असली code सब खो गया। इसके बाद जिस game में मैं इसी तरह डूबा, वह Tribes 2 था, और उसमें संभव scripting और modding सचमुच कमाल की थी

    • अंतहीन files के ढेर में मुझे अपने mod की binary मिल गई
      https://xn0.co/Xeno-Mod_1.9_Setup.exe
      HN पर सभी लोग तो जाहिर है किसी भी internet source से executable download करके चला ही लेंगे! फिर भी अगर आपके पास original QII है और जिज्ञासा है, तो इसे चलाना सुरक्षित है
    • Tribes 2 मेरा पहला modding अनुभव था, और उस game की मेरे दिल में बहुत खास जगह है। बाद में Ultima Online emulators Sphere और RunUO ने मुझे gamer से programmer बना दिया
    • dropdown console मिलना किसी रहस्योद्घाटन जैसा था
      श्रद्धांजलि: http://guake-project.org/
  • जबरदस्त, यह मुझे सीधे 90s में वापस ले गया। ठीक-ठीक कहूं तो पहले Quake की बात है
    bedroom के floor पर एक PC था, शायद Pentium 166MMX, और मेरा दोस्त उससे थोड़ा तेज़, करीब 233 वाली मिलती-जुलती machine लेकर आया था। LAN cards नहीं थे
    पिता की पुरानी parallel cable का इस्तेमाल करके Windows को ऐसा समझाया जैसे यह LAN connection हो, और यह इतना ठीक चला कि हमने कई दिनों तक खेला। फिर थोड़ा ऊब गए और modding scene में घुस गए; खुद कुछ बनाया नहीं, बस public में उपलब्ध चीज़ें download करके आज़माईं। Girobot और KQP(Killer Quake Patch) कभी नहीं भूल सकता
    Girobot bots terrain में फंस न जाएं तो काफी ताकतवर थे। असली खजाना KQP था, जिसमें हर तरह के पागलपन भरे mods और weapons, bot system जुड़ जाते थे। Vampire Gun हर बार हंसा-हंसाकर लोटपोट कर देता था, क्योंकि जिसे लगती वह player धीरे-धीरे, लेकिन बहुत धीरे भी नहीं, मांस के टुकड़ों में टूटकर मरता था। 90s की सच में बहुत याद आती है

    • “Girobot” से आपका मतलब “Gyro Gearloose” का Gyrobot[1] है?
      वैसे मुझे लगता है KQP में ZeusBots भी शामिल थे
      [1] https://github.com/Jason2Brownlee/QuakeBotArchive
    • modem से, और कभी-कभी T1 से download किए गए Quake 2 multiplayer के mods, maps, skins मेरे पास 8GB थे। उन mods की सच में याद आती है
    • पिता की पुरानी parallel cable, यानी null modem से connect किया था? मैंने भी college roommate के साथ apartment में यही setup इस्तेमाल किया था। 90s के मध्य की बात है, Doom 2 और उस दौर के FPS खेले थे; अच्छी यादें हैं
  • मैंने कहीं और लोगों को यह शिकायत करते देखा कि rerelease में Linux version नहीं है, लेकिन इन्होंने source release कर दिया है और लिखा है कि इसे clang से test किया गया है। अपने सिद्धांत निभाने के लिए id को ज़ोरदार सलाम

    • जिज्ञासा है कि उन्होंने यह source code क्यों release किया। क्या यह पूरी तरह सिद्धांतों की वजह से था, या पुराने code के भी GPL होने के कारण कोई legal obligation था, पता नहीं
      मुझे लगता है पुराना code भी उन्हीं के स्वामित्व में रहा होगा, इसलिए legal obligation नहीं रहा होगा
    • यह version सभी major platforms पर release हुआ है, और मुझे काफी यकीन है कि आजकल Nintendo और Sony दोनों अपने SDK toolchain में Clang/LLVM इस्तेमाल करते हैं। Linux भी ध्यान में रहा हो सकता है, लेकिन मुझे लगता है मुख्य motivation इसे modern consoles पर build होने लायक बनाना था
    • यह तो सिर्फ game code लगता है, engine source code नहीं; क्या मैं कुछ miss कर रहा हूं?
  • ऐसे बहुत से games हैं जो अब बेचे नहीं जाते और modern software/hardware stack पर चलते भी नहीं
    अच्छा होता अगर कोई कानून होता कि अगर software के लिए 20 साल तक नए platforms पर चलाने वाले patches जारी नहीं किए गए, तो cultural importance के नज़रिए से उसे open source करना चाहिए

  • सोच रहा हूं कि इस source की तरह C/C++ में type suffix के तौर पर _t इस्तेमाल करने के बारे में लोग क्या सोचते हैं
    मेरी समझ में यह language-defined types के लिए reserved है, लेकिन मैंने कोई वाजिब विकल्प नहीं देखा। suffix न हो तो code कभी-कभी अजीब लगने लगता है। उदाहरण के लिए “viewport” के custom type के लिए मुझे viewport viewport; की तुलना में viewport_t viewport; बेहतर लगता है

    • मेरी जानकारी में वह C language खुद की बजाय POSIX का rule है। खैर, मैं अपने personal code में तो इसे इस्तेमाल करता हूं, लेकिन जिन coding standards के साथ मैंने काम किया है उनमें non-POSIX environments में भी यह अक्सर banned था
      आमतौर पर इतना विरोध करने लायक नहीं होता, इसलिए style guide जैसे चाहे वैसे type names रखता हूं। t prefix उससे भी खराब है, और पूरा word typedef जोड़ना भी उससे खराब
    • मेरी समझ के मुताबिक _t suffix को reserve करने वाला C नहीं, POSIX है
      फिर भी id Tech codebase पर काम करते हुए _s/_t की आदत लग गई, और मैंने तय किया कि मेरे C codebase पर हमेशा के लिए “POSIX non-compliant” का ठप्पा लग जाए तो भी ठीक है। असल में उसका जो भी मतलब हो। C++ में मैं बस InitialCamelCase इस्तेमाल करता हूं
    • यह सबकी पसंद के मुताबिक नहीं होगा, लेकिन मैं types के लिए CamelCase और variables के लिए under_scores इस्तेमाल करता हूं। Viewport viewport; जैसा रूप आ जाता है, लेकिन कम से कम यह आसानी से समझ आ जाता है कि Viewport type है
    • जब IDE ज़्यादा मदद नहीं करता, और सामने दिख रहे code को देखकर ही समझना हो कि क्या चीज़ क्या है, तब यह उपयोगी होता है
    • जहां मैं काम करता हूं वहां की C style guide _type इस्तेमाल करने को कहती है
      दिलचस्प बात यह है कि custom OS इस्तेमाल करने वाले embedded product के बहुत बड़े codebase में fixed-width integer types के लिए uint32_t जैसे types नहीं इस्तेमाल होते। इसके बजाय company का common header _t suffix के बिना uint32 वगैरह define करता है। ऐसा decision क्यों लिया गया, मुझे नहीं पता
  • बड़े होते समय मेरे लिए यह गेम ही सब कुछ था। क्लैन, लैडर और असली ऑनलाइन गेमिंग culture से पहली बार इसी ने परिचय कराया
    मेरा मैप The Edge था, और हथियार railgun या rocket launcher। उस समय dial-up था, इसलिए कम latency वाले server ढूंढना ज़रूरी था। सबसे परेशान करने वाली बात वे लोग थे जो वह gun इस्तेमाल करते थे जिससे सबको lag होता था
    मुझे पता है कि Q3 इस genre को परफेक्ट करने वाला बड़ा game था, लेकिन मेरा पसंदीदा हमेशा Quake 2 ही रहेगा। इसमें मजबूत single-player और expansion packs भी थे, और इसकी pace भी मेरे लिए बिल्कुल सही थी। Q3 के आने के बाद सब कुछ बहुत तेज़ हो गया

    • VQL physics वाले Quake Live servers आपको पसंद आ सकते हैं
      VQL, Q2 के काफी करीब है, और PQL, CPMA या QuakeWorld के ज्यादा करीब है। बोनस के तौर पर, The Edge भी Quake Live में खेला जा सकता है
    • railgun से हिट करो और machine gun से finish, gg
  • अगर आप Quake 2 के fan हैं और Oculus Quest 2 इस्तेमाल कर सकते हैं, तो Quake2Quest आज़माने की सलाह दूँगा। जिन maps पर पहले बेहद लंबा समय बिताया था, उनमें खुद दौड़ते-फिरते महसूस करना वाकई अलग अनुभव है