[{"data":1,"prerenderedAt":477},["ShallowReactive",2],{"project-32828309":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":46,"post_text":47,"what":48,"said":82,"maker_in_thread":220,"shape":227,"grid":231,"attempts":437,"same_week":438,"maker_shows":34,"maker_hidden":469,"reader_version":470,"card":471},"32828309","Infernal Sigil","Mini Metroidvania in 13KB of JavaScript","title","Show HN: Mini Metroidvania in 13KB of JavaScript","https:\u002F\u002Farineonshark.itch.io\u002Finfernal-throne","arineonshark.itch.io","arikgalactic",1663093505,2022,238,79,207,2570,9,"notable","games","metroidvania platformer","web_app",[24,25,26,27,28],"metroidvania","javascript game","js13k","canvas platformer","procedural audio","mixed",0.324,{"positive":32,"neutral":33,"mixed":34,"critical":33},20,10,2,42,{"design":37,"execution":39,"performance":42,"idea":44},{"positive":38,"critical":34},12,{"positive":40,"critical":41},1,5,{"positive":40,"critical":43},0,{"positive":34,"critical":45},3,[41,43,41,45,45,45,41,43,43,43,43,43,43,43,43,43,41,41,40,41,45,40,45,45,45,41,40,45,41,41,41,41,40,43,45,40,43,43,43,40],"As part of the annual JS13K games challenge, I've put together a pretty large (but small-in-code) Metroidvania game that fits in just 13KB of compressed Javascript.\n\nThe source is available here: https:\u002F\u002Fgithub.com\u002Farikwex\u002Finfernal-sigil\n\nNOTE: the current head of the main branch is at 13.6KB due to quality of life patches. The legit 13KB version is tagged in github.\n\nUseful hacks:\n- Using Roadroller (https:\u002F\u002Fgithub.com\u002Flifthrasiir\u002Froadroller) for compression\n- Compressing the map data as grayscale PNG paired with some code generation.\n- Using procedural animation for all characters.\n- Replaci",{"problem":49,"audience":49,"pricing":49,"motivation":50,"time_to_build":49,"stack":56,"openness":79,"stage":80,"team_size":81},null,{"value":51,"source":52,"evidence":53},"Entry in the annual JS13K games challenge","maker",[54],{"id":55},"post",[57,61,65,73],{"value":58,"source":52,"evidence":59},"JavaScript",[60],{"id":55},{"value":62,"source":52,"evidence":63},"Roadroller compression",[64],{"id":55},{"value":66,"source":67,"evidence":68},"Canvas 2D API","commenter",[69],{"id":70,"by":71,"text":72},"32830274","mirkodrummer","Damn it doesn't even use WebGL context, just plain canvas 2d drawing api, congrats to the dev, great job",{"value":74,"source":52,"evidence":75},"WebAudio",[76],{"id":77,"by":11,"text":78},"32831267","1. The WebAudio api requires user interaction to allow playing audio. The main menu saying \"press any key\" is intended to trigger that. 2. One WebAudio is ready to use, I build…","open_source","launched","solo",{"praise":83,"objections":122,"requests":162,"questions":183,"alternatives":201},[84,103,114],{"value":85,"source":67,"evidence":86},"Smooth animations and satisfying controls",[87,91,95,99],{"id":88,"by":89,"text":90},"32828943","yesimahuman","Very smooth animations. Impressive work. Are we about to see a bunch of serious web\u002FJS games coming (with Vampire Survivors paving the way?)",{"id":92,"by":93,"text":94},"32830851","jordemort","I'd like more of this, it was very entertaining. The controls are great. Tip: You can use the regular attack to slow your descent when falling.",{"id":96,"by":97,"text":98},"32829641","nextaccountic","The character controls and animation feel satisfying",{"id":100,"by":101,"text":102},"32828624","lioeters","So smooth! Easy to get started, and fun to play. I'll enjoy taking the time to explore the game world. The code is so readable too, I'm learning from reading it.",{"value":104,"source":67,"evidence":105},"Impressive compression to 13KB",[106,110],{"id":107,"by":108,"text":109},"32828904","aidenn0","As a comparison, a zstd compressed copy of the US Metroid ROM comes out at 59781 bytes. Castlevania comes out at 71237 bytes.",{"id":111,"by":112,"text":113},"32835163","wgx","From the same competition: this game \"Dante\" appears to be 3D (or at least pseudo-3D), and has a first person mode too. In 13Kb... mind blowing.…",{"value":115,"source":67,"evidence":116},"Good level design and readable code",[117,121],{"id":118,"by":119,"text":120},"32840317","strix_varius","Great level design!",{"id":100,"by":101,"text":102},[123,133,148,155],{"value":124,"source":67,"evidence":125},"Not a true Metroidvania, more a platformer",[126,130],{"id":127,"by":128,"text":129},"32828674","daneel_w","Great work on such a small footprint, but there's nothing Metroidvania about it. It's just a regular \"jump 'n' run\" platformer.",{"id":131,"by":128,"text":132},"32829280","The graphics and scenery. It's 13 kilobytes of JavaScript with no bitmapped graphics in it, I know, but if we settle for (as an example) your two very broad strokes of running…",{"value":134,"source":67,"evidence":135},"Broken or stuck in Safari and Firefox on Linux",[136,140,144],{"id":137,"by":138,"text":139},"32828861","j_leboulanger","Not working on Safari",{"id":141,"by":142,"text":143},"32829209","kemayo","It semi-works. It launches, loads, says something about wingspan and double jump, then immediately teleports you to a location where you're stuck. It's all very jumbled:…",{"id":145,"by":146,"text":147},"32831870","chrismorgan","Broken in Firefox under Linux, “TypeError: navigator.getGamepads is not a function”.",{"value":149,"source":67,"evidence":150},"Frustrating difficulty and missing key legend",[151],{"id":152,"by":153,"text":154},"32833197","RulerOf","Impressive technically, with very smooth and intuitive movement. I would prefer to see a key legend that I have to close. \"Figure shit out yourself\" when I've got a hundred keys…",{"value":156,"source":67,"evidence":157},"Too many keyboard buttons",[158],{"id":159,"by":160,"text":161},"32829486","jbverschoor","That was fun :) spent 38minutes.. 571 bones left, 8 dead Too many buttons IMO for a keyboard",[163,170,177],{"value":164,"source":67,"evidence":165},"Gamepad support or better controller support",[166],{"id":167,"by":168,"text":169},"32834571","mod","Agree, movement was really nice. On controller would be slightly better.",{"value":171,"source":67,"evidence":172},"Way to kill yourself and return to checkpoint",[173],{"id":174,"by":175,"text":176},"32834299","skellyclock","Fell out the bottom of the map There doesn't seem to be a way to kill yourself and go back to a checkpoint",{"value":178,"source":52,"evidence":179},"Fix Safari support",[180],{"id":181,"by":11,"text":182},"32828909","Only tested in Chrome + Edge + Firefox. I'll look in to Safari and report back!",[184,195],{"value":185,"source":67,"evidence":186},"Why does a 13KB game have a loading screen?",[187,191],{"id":188,"by":189,"text":190},"32830838","johnfn","If it's really 13kb, how can there be a loading screen?!? Checkmate! In seriousness though, this is awesome! I love little metroidvanias. :) And the interactions, like the jump…",{"id":192,"by":193,"text":194},"32830964","nonethewiser","But seriously, why is that?",{"value":196,"source":67,"evidence":197},"Could WebAssembly do better here?",[198],{"id":199,"by":193,"text":200},"32830782","Is this something that web assembly could actually do well?",[202,209,213],{"value":203,"source":67,"evidence":204},"Dwitter",[205],{"id":206,"by":207,"text":208},"32830281","beagle3","It actually is a fine comparison. At ~140 chars on a browser, JS can do this: https:\u002F\u002Fwww.dwitter.net\u002Fd\u002F26107 . That's not idiomatic JavaScript, but then, people had to work hard…",{"value":210,"source":67,"evidence":211},"Dante (JS13K entry)",[212],{"id":111,"by":112,"text":113},{"value":214,"source":67,"evidence":215},"CrossCode",[216],{"id":217,"by":218,"text":219},"32834273","Maphistow","Crosscode was amazing and is a pure JS\u002Fcanvas game. I dunno I've fiddled a bit with some engines, but the tooling\u002Fdocs are pretty lackluster compared to unity\u002Fgodot",{"comments":45,"answered":40,"key":221},[222,223,226],{"id":77,"text":78},{"id":224,"text":225},"32831277","Huge thanks to the itch.io community for recommending this second layout. Glad you found it comfortable.",{"id":181,"text":182},{"commenters":228,"max_depth":18,"maker_replies":45,"first_comment_mins":229,"lifespan_hours":230},56,6,57,[232,234,236,239,241,243,247,250,252,256,258,260,262,264,265,268,270,272,274,276,279,282,285,288,290,293,295,298,301,304,306,309,311,313,317,318,322,326,329,332,337,339,340,341,344,346,349,352,356,359,364,366,368,371,373,374,377,379,380,384,388,390,394,398,401,404,407,410,412,416,417,419,421,423,425,428,430,432,434],[88,43,41,233,89,43],"project\u002Fpositive\u002Fdesign",[217,43,43,235,218,43],"other\u002Fneutral\u002Fnone",[237,43,43,235,238,43],"32834558","aroman",[188,40,41,240,189,43],"project\u002Fpositive\u002Fexecution",[192,40,45,242,193,43],"project\u002Fneutral\u002Fexecution",[244,40,45,245,246,43],"32834809","project\u002Fneutral\u002Fnone","solumunus",[248,40,43,235,249,43],"32834971","filleduchaos",[77,40,43,251,11,40],"maker\u002Fneutral\u002Fexecution",[253,40,45,254,255,43],"32831784","project\u002Fneutral\u002Fperformance","Narishma",[257,40,45,242,101,43],"32832850",[159,34,45,259,160,43],"project\u002Fmixed\u002Fdesign",[261,34,41,233,193,43],"32830869",[224,34,43,263,11,40],"maker\u002Fneutral\u002Fnone",[107,45,43,235,108,43],[266,45,43,235,267,43],"32829529","peanut_worm",[206,45,43,269,207,43],"commenter\u002Fneutral\u002Fnone",[271,45,43,269,267,43],"32830318",[273,45,43,269,108,43],"32831181",[275,45,43,269,207,43],"32834008",[277,45,43,235,278,43],"32835771","aricz",[280,45,43,269,281,43],"32831548","dahfizz",[283,45,43,269,284,43],"32832285","bebrws",[286,45,43,269,287,43],"32832566","conductr",[289,45,43,269,207,43],"32833947",[291,45,43,269,292,43],"32834871","forgotpwd16",[294,45,43,269,108,43],"32831170",[296,45,43,235,297,43],"32832169","spywaregorilla",[299,45,43,235,300,43],"32834290","leshenka",[302,45,43,235,303,43],"32834858","p1necone",[111,305,43,235,112,43],4,[307,41,43,235,308,43],"32829948","lifthrasiir",[310,229,41,233,267,43],"32828651",[100,312,41,233,101,43],7,[314,315,41,233,316,43],"32829983",8,"hypertexthero",[152,18,45,259,153,43],[319,18,43,320,321,43],"32833694","commenter\u002Fpositive\u002Fdesign","worthless-trash",[323,33,40,324,325,43],"32831632","project\u002Fcritical\u002Fexecution","gkTyM2B8V7R5qF8",[70,327,41,328,71,43],11,"project\u002Fpositive\u002Fperformance",[330,38,41,233,331,43],"32828397","petersonh",[333,334,41,335,336,43],"32835094",13,"project\u002Fpositive\u002Fidea","gamescodedogs",[137,338,40,324,138,43],14,[181,338,43,263,11,40],[141,338,40,324,142,43],[342,338,40,324,343,43],"32830296","hombre_fatal",[92,345,41,233,93,43],15,[347,345,45,348,193,43],"32830972","project\u002Fneutral\u002Fdesign",[350,345,45,348,351,43],"32832019","sgarman",[353,354,41,233,355,43],"32829142",16,"lxe",[174,357,40,358,175,43],17,"project\u002Fcritical\u002Fdesign",[360,361,41,362,363,43],"32831212",18,"project\u002Fpositive\u002Fnone","bil7",[365,361,41,362,363,43],"32842955",[145,367,40,324,146,43],19,[369,367,45,242,370,43],"32832060","thristian",[372,367,45,242,146,43],"32832130",[199,32,45,254,193,43],[375,32,43,269,376,43],"32834349","iainmerrick",[96,378,41,233,97,43],21,[167,378,41,233,168,43],[381,382,41,362,383,43],"32834110",22,"djmips",[385,386,41,233,387,43],"32834438",23,"sergiusignacius",[118,389,41,233,119,43],24,[391,392,41,335,393,43],"32832404",25,"karpovv-boris",[395,396,41,362,397,43],"32837773",26,"flykespice",[127,399,40,400,128,43],27,"project\u002Fcritical\u002Fidea",[402,399,43,269,403,43],"32828796","rogerclark",[405,399,43,269,406,43],"32829151","janmarsal",[408,399,43,269,409,43],"32832711","shadowfoxx",[411,399,43,269,128,43],"32829289",[413,399,45,414,415,43],"32829115","project\u002Fneutral\u002Fidea","Bigpet",[131,399,40,358,128,43],[418,399,40,400,415,43],"32829328",[420,399,43,235,128,43],"32829512",[422,399,43,269,343,43],"32830358",[424,399,43,269,128,43],"32831384",[426,399,43,269,427,43],"32833731","MRtecno98",[429,399,43,269,303,43],"32834880",[431,399,43,269,343,43],"32861582",[433,399,40,400,142,43],"32829472",[435,399,43,235,436,43],"32854852","jsmith45",[],[439,444,449,454,459,464],{"id":440,"name":441,"points":442,"category":443},"32768590","Modern for HN",308,"productivity",{"id":445,"name":446,"points":447,"category":448},"32798891","HiFiScan",260,"creative",{"id":450,"name":451,"points":452,"category":453},"32837829","StackAid",226,"infrastructure",{"id":455,"name":456,"points":457,"category":458},"32828799","s3sqlite",160,"dev_tools",{"id":460,"name":461,"points":462,"category":463},"32823589","pg_netstat",158,"data",{"id":465,"name":466,"points":467,"category":468},"32833907","dato",134,"ai",false,"v2",{"id":472,"name":5,"line":6,"ai":469,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":473,"top":18,"kw":474,"maker":11,"domain":10,"tier":19,"attempts":43,"strip":475,"url":9,"mix":476,"praise":85,"objection":124,"sub":21},32828309,0.32,[24,25,26,27,28],"5053335000000000551531333513555510310001",[32,33,34,33],1794036624972]