[{"data":1,"prerenderedAt":286},["ShallowReactive",2],{"project-15793156":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":44,"what":45,"said":48,"maker_in_thread":126,"shape":128,"grid":133,"attempts":248,"same_week":249,"maker_shows":38,"maker_hidden":278,"reader_version":279,"card":280},"15793156","3D Game Programming","3D Game Programming using bitblting in Windows","title","Show HN: 3D Game Programming using bitblting in Windows","https:\u002F\u002Fgithub.com\u002Flowlevel86\u002F3D-Game-Programming","github.com","lowlevel86",1511828985,2017,109,50,411,2242,19,"notable","learning_science","game programming tutorial","other",[24,25,26,27],"3d game programming","bitblt","software rendering","windows gdi","roasted",-0.239,{"positive":31,"neutral":32,"mixed":33,"critical":34},2,4,0,9,15,{"design":37,"execution":39,"idea":41},{"positive":33,"critical":38},1,{"positive":38,"critical":40},5,{"positive":33,"critical":42},3,[33,33,33,33,33,33,33,33,38,33,40,38,42,38,38,38,38,33,33,33,33,33,33,33,33,33,33,42,33,33,33,33,33,33,33,33,33,38,33,38],null,{"problem":44,"audience":44,"pricing":44,"motivation":44,"time_to_build":44,"stack":46,"openness":47,"stage":47,"team_size":47},[],"unknown",{"praise":49,"objections":66,"requests":95,"questions":96,"alternatives":101},[50],{"value":51,"source":52,"evidence":53},"Good for learning low-level graphics and math, with simple examples","commenter",[54,58,62],{"id":55,"by":56,"text":57},"15795191","NKCSS","ALways nice to see simple examples, but just going through an example, I see this: imgWidth = pow(2, log(sqrt(stat_p.st_size\u002F3))\u002Flog(2)); And I have no clue why because if you…",{"id":59,"by":60,"text":61},"15796531","ygra","Honestly, though, it's not like the Windows API parts of those examples are clunky or hard to understand. It's extremely straightforward code (effectively probably just using…",{"id":63,"by":64,"text":65},"15799702","cabaalis","I think the intention of this is to get closer to \"on the metal\" as a teaching tool of the math and low-level graphics rendering. Using SDL or others would abstract all that away.",[67,82,91],{"value":68,"source":52,"evidence":69},"Tied to Windows; cross-platform libraries like SDL would widen reach",[70,74,78],{"id":71,"by":72,"text":73},"15794709","Ace17","This is nice! Too bad it's tied to one platform (Windows), instead of some more generic API (like SDL or opengl).",{"id":75,"by":76,"text":77},"15795165","partycoder","I do not recommend learning the Windows API. There are convenient crossplatform alternatives to it for this use-case.",{"id":79,"by":80,"text":81},"15796151","dkersten","> There's no harm in using\u002Fcoding against the windows api It needlessly restricts your platform though. For example, I was very interested in the handmade hero tutorials linked…",{"value":83,"source":52,"evidence":84},"Windows API is clunky and creates vendor lock-in",[85,88],{"id":86,"by":76,"text":87},"15799476","Well, you said it yourself. \"WndProc\". These abbreviations is something you will see frequently and you will have to spend time memorizing them. Better identifiers are possible.…",{"id":89,"by":76,"text":90},"15802513","There's harm. It's called \"vendor lock-in\". https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVendor_lock-in Windows API is carefully designed to maximize costs of switching to another platform.…",{"value":92,"source":52,"evidence":93},"Code has an unclear image-width calculation that gives inconsistent results",[94],{"id":55,"by":56,"text":57},[],[97],{"value":98,"source":52,"evidence":99},"Why the image width calculation truncates to different values",[100],{"id":55,"by":56,"text":57},[102,113,120],{"value":103,"source":52,"evidence":104},"Handmade Hero",[105,109],{"id":106,"by":107,"text":108},"15794139","ePierre","If you're into game programming, Casey Muratori's Handmade Hero [1] project is worth checking. From the website description, “Handmade Hero is an ongoing project to create a…",{"id":110,"by":111,"text":112},"15794807","pooloo1","Casey goes through the math, programming, and the logical processes of understanding how to build a an engine and a game with that engine. Its extremely deep, and extremely…",{"value":114,"source":52,"evidence":115},"SDL",[116,117],{"id":79,"by":80,"text":81},{"id":118,"by":76,"text":119},"15799544","No, on Windows, SDL will interface directly with the Windows API, not GTK or Qt. And will give you a native window, the same as if you do it by hand. Proof:…",{"value":121,"source":52,"evidence":122},"3D Math Primer for Graphics and Game Development",[123],{"id":124,"by":64,"text":125},"15794608","Allow me to recommend this book as well: 3D Math Primer for Graphics and Game Development https:\u002F\u002Fwww.amazon.com\u002FPrimer-Graphics-Development-Wordware-Library\u002Fdp\u002F1556229119 It…",{"comments":33,"answered":33,"key":127},[],{"commenters":129,"max_depth":130,"maker_replies":33,"first_comment_mins":131,"lifespan_hours":132},24,10,191,159,[134,136,137,140,144,147,150,153,156,157,160,162,165,169,171,175,177,179,181,183,185,187,190,193,195,197,199,201,204,205,207,209,211,213,215,216,219,221,223,225,227,229,232,234,236,238,240,241,244,246],[106,33,33,135,107,33],"other\u002Fneutral\u002Fnone",[110,33,33,135,111,33],[138,33,33,135,139,33],"15795279","bikitan",[141,33,33,142,143,33],"15795287","commenter\u002Fneutral\u002Fnone","chii",[145,33,33,142,146,33],"15795780","reificator",[148,33,33,142,149,33],"15795942","thorin",[151,33,33,142,152,33],"15796370","psyc",[154,33,33,135,155,33],"15795299","ncallaway",[124,38,33,135,64,33],[158,38,33,135,159,33],"15795280","Zolomon",[71,31,38,161,72,33],"project\u002Fcritical\u002Fdesign",[163,31,33,142,164,33],"15803568","lostgame",[166,42,40,167,168,33],"15797520","project\u002Fpositive\u002Fnone","bitwize",[55,32,38,170,56,33],"project\u002Fcritical\u002Fexecution",[172,32,42,173,174,33],"15795533","project\u002Fneutral\u002Fexecution","quincunx",[176,32,42,173,56,33],"15795761",[178,32,38,170,56,33],"15795997",[180,32,38,170,174,33],"15796111",[182,32,42,173,56,33],"15796524",[184,32,38,170,174,33],"15796565",[75,40,38,186,76,33],"project\u002Fcritical\u002Fidea",[188,40,33,142,189,33],"15795285","nice_byte",[191,40,33,142,192,33],"15795730","longhairedhippy",[194,40,33,142,143,33],"15795904",[79,40,33,196,80,33],"commenter\u002Fcritical\u002Fnone",[198,40,33,142,174,33],"15796181",[200,40,33,142,76,33],"15803768",[202,40,33,142,203,33],"15796439","cturner",[118,40,33,142,76,33],[206,40,33,142,203,33],"15801877",[208,40,33,142,76,33],"15802638",[210,40,33,142,80,33],"15807033",[212,40,33,142,80,33],"15806998",[59,40,40,214,60,33],"project\u002Fpositive\u002Fexecution",[86,40,38,170,76,33],[217,40,33,142,218,33],"15800310","Tobba_",[220,40,33,142,76,33],"15801070",[222,40,33,142,218,33],"15802119",[224,40,33,142,76,33],"15803319",[226,40,33,142,218,33],"15804698",[228,40,33,142,60,33],"15801242",[230,40,33,142,231,33],"15796884","animal531",[233,40,33,142,76,33],"15799392",[235,40,33,142,231,33],"15805677",[237,40,33,142,218,33],"15799339",[239,40,33,142,76,33],"15803694",[89,40,38,186,76,33],[242,40,33,142,243,33],"15844330","daemin",[63,40,42,245,64,33],"project\u002Fneutral\u002Fidea",[247,40,38,186,164,33],"15803572",[],[250,255,260,265,269,274],{"id":251,"name":252,"points":253,"category":254},"15765762","Nebula",345,"productivity",{"id":256,"name":257,"points":258,"category":259},"15796943","Tenta DNS",283,"infrastructure",{"id":261,"name":262,"points":263,"category":264},"15810244","Promptui",196,"languages",{"id":266,"name":267,"points":268,"category":264},"15809291","stream-audio-fingerprint",158,{"id":270,"name":271,"points":272,"category":273},"15785333","Ondevice SSH",152,"dev_tools",{"id":275,"name":276,"points":277,"category":20},"15795682","Angelic-hierarchy",95,false,"v2",{"id":281,"name":5,"line":6,"ai":278,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":282,"top":18,"kw":283,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":284,"url":9,"mix":285,"praise":51,"objection":68,"sub":21},15793156,-0.24,[24,25,26,27],"0000000010513111100000000003000000000101",[31,32,33,34],1793990967025]