[{"data":1,"prerenderedAt":278},["ShallowReactive",2],{"project-36117037":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":34,"aspects":35,"strip":42,"post_text":44,"what":45,"said":81,"maker_in_thread":167,"shape":176,"grid":181,"attempts":241,"same_week":242,"maker_shows":37,"maker_hidden":270,"reader_version":271,"card":272},"36117037","Tiny","A 2D Game Engine in Kotlin Working with Lua","title","Show HN: Tiny – A 2D Game Engine in Kotlin Working with Lua","https:\u002F\u002Fminigdx.github.io\u002Ftiny\u002F","minigdx.github.io","dwursteisen",1685387957,2023,100,28,648,3109,21,"notable","games","game engine","library",[24,25,26,27],"2d game engine","kotlin multiplatform","lua game engine","hot reload","debated",0.048,{"positive":31,"neutral":32,"mixed":33,"critical":32},3,4,0,11,{"design":36,"idea":38,"execution":40,"performance":41},{"positive":33,"critical":37},1,{"positive":39,"critical":37},2,{"positive":33,"critical":33},{"positive":33,"critical":39},[31,33,33,37,33,33,33,43,33,33,33,33,43,33,31,31,33,37,43,37,33,37,33,33,33,33,31,33],5,"I created a small 2D game engine named  Tiny.\n\nThe engine was created using Kotlin Multiplatform and can run on a JVM and JS.\nFunny things: Games can be created using the programming language Lua.\n\nTiny is designed to help you create and test your ideas quickly and effectively. Not only can you run your games on your desktop computer, but you can also export them for the web, making it easy to share your creations with others.\n\nYou can create games easily with the hot reload, small API and Lua, which is very easy to learn.\n\nIf you want to test a game idea, to try to create your first game or j",{"problem":46,"audience":52,"pricing":56,"motivation":56,"time_to_build":56,"stack":57,"openness":80,"stage":80,"team_size":80},{"value":47,"source":48,"evidence":49},"Lets people create and test simple 2D game ideas quickly, with hot reload and Lua scripting","maker",[50],{"id":51},"post",{"value":53,"source":48,"evidence":54},"People wanting to make their first game or test game ideas",[55],{"id":51},null,[58,62,66,72],{"value":59,"source":48,"evidence":60},"Kotlin Multiplatform",[61],{"id":51},{"value":63,"source":48,"evidence":64},"Lua",[65],{"id":51},{"value":67,"source":48,"evidence":68},"Luak (LuaJ port for Kotlin Multiplatform)",[69],{"id":70,"by":11,"text":71},"36122172","Actually, it's using Luak (https:\u002F\u002Fgithub.com\u002Fkorlibs\u002Fkorge-luak). It's a port of LuaJ for Kotlin Multiplatform.",{"value":73,"source":74,"evidence":75},"Kotlin\u002FJS","commenter",[76],{"id":77,"by":78,"text":79},"36119235","gavinray","``` > How does it work under the hood? ``` The Kotlin is transpiled to JavaScript by the Kotlin compiler: https:\u002F\u002Fkotlinlang.org\u002Fdocs\u002Fjs-overview.html","unknown",{"praise":82,"objections":94,"requests":116,"questions":121,"alternatives":136},[83],{"value":84,"source":74,"evidence":85},"Interesting fantasy-console-style engine; Kotlin and Lua combination appreciated",[86,90],{"id":87,"by":88,"text":89},"36121981","bodge5000","Feels like we've been getting a lot more fantasy-console-style frameworks\u002Fengines lately and I've gotta say I'm all for it. Not sure this one is for me, but love to see it…",{"id":91,"by":92,"text":93},"36118725","xigency","Looks pretty cool. I’m curious how Lua scripting support is handled for the web platform. There have been one or two different projects for Lua support on the web in the past.",[95,106],{"value":96,"source":74,"evidence":97},"Lua is unpopular or unnecessary when using Kotlin",[98,102],{"id":99,"by":100,"text":101},"36120032","cies","Kotlin is pretty nice as a language: quite strong type system, good tooling (like JetBrain's IDEA Community), terse, supports functional programming quite well, etc. Lua OTOH is…",{"id":103,"by":104,"text":105},"36122666","remon","As opposed to a 2D Game Engine in Kotlin Working with Kotlin? Why?!?",{"value":107,"source":74,"evidence":108},"Browser performance and latency concerns",[109,113],{"id":110,"by":111,"text":112},"36119194","bullen","Oh, ok I thought the demo was a picture because nothing happended when you clicked the thing... The JS version has very high latency. How does it work under the hood? Can the…",{"id":114,"by":111,"text":115},"36119250","I think it would be more interesting to expose how the bytecode becomes JS. But I guess I'll dig through at some point... nm, that breakout (that you could run on a 6502) maxxes…",[117],{"value":118,"source":74,"evidence":119},"Option to use Kotlin instead of Lua",[120],{"id":99,"by":100,"text":101},[122,130],{"value":123,"source":74,"evidence":124},"How Lua scripting works on the web",[125,126],{"id":91,"by":92,"text":93},{"id":127,"by":128,"text":129},"36119300","mometsi","Looks like it uses luaj to run scripts from kotlin, and the whole kotlin project can use the Kotlin\u002FJS compiler to target the browser.",{"value":131,"source":74,"evidence":132},"Why not use Java with hot deploy",[133],{"id":134,"by":111,"text":135},"36119132","Why not just use Java and hot deploy on the JVM?",[137,147,153,157,161],{"value":138,"source":74,"evidence":139},"PICO-8",[140,144],{"id":141,"by":142,"text":143},"36123013","otikik","I like PICO-8. The limitations it has (e.g. 16 colors, 128x128 screen) seem to \"offend\" some folk though. I have learned to like the limitations.",{"id":145,"by":88,"text":146},"36125968","Right out, the most interesting ones to me are WASM-4, because it seems to be one of the strictest and most minimal, and Pyxel, because it uses Python. Though to be fair I…",{"value":148,"source":48,"evidence":149},"LibGDX",[150],{"id":151,"by":11,"text":152},"36122179","Not a the time. If you want to try Kotlin for creating games, I advise to check other game engine: - https:\u002F\u002Flittlekt.com\u002F (LittleKt (Little Kotlin) is a multiplatform 2D game…",{"value":154,"source":48,"evidence":155},"KorGE",[156],{"id":151,"by":11,"text":152},{"value":158,"source":48,"evidence":159},"LittleKt",[160],{"id":151,"by":11,"text":152},{"value":162,"source":74,"evidence":163},"Love2D",[164],{"id":165,"by":88,"text":166},"36126067","I'd say its the language of choice for game modding (which roblox pretty much is) specifically, but not game dev as a whole. In fact I'd go so far as to say its not used in…",{"comments":32,"answered":39,"key":168},[169,170,173],{"id":151,"text":152},{"id":171,"text":172},"36122955","Lua is easy to learn, dynamically typed and doesn't need to be compiled: it's perfect to get instant reload and it's perfect for small projects. If you want to create games using…",{"id":174,"text":175},"36122202","I didn't build Tiny for performance, I'm afraid that you might get poor performance. But you can git it a try!",{"commenters":177,"max_depth":178,"maker_replies":32,"first_comment_mins":179,"lifespan_hours":180},16,8,174,26,[182,184,186,189,191,193,196,197,199,202,204,206,207,211,213,215,216,217,219,221,223,225,226,228,231,234,237,238],[99,33,31,183,100,33],"project\u002Fneutral\u002Fdesign",[151,33,33,185,11,37],"project\u002Fneutral\u002Fidea",[187,33,33,188,100,33],"36131303","commenter\u002Fneutral\u002Fnone",[103,37,37,190,104,33],"project\u002Fcritical\u002Fdesign",[171,37,33,192,11,37],"maker\u002Fneutral\u002Fdesign",[194,37,33,188,195,33],"36123237","cornfutes",[165,37,33,188,88,33],[87,39,43,198,88,33],"project\u002Fpositive\u002Fidea",[200,39,33,188,201,33],"36122867","pablo1",[141,39,33,203,142,33],"other\u002Fneutral\u002Fnone",[205,39,33,203,88,33],"36125998",[145,39,33,203,88,33],[208,31,43,209,210,33],"36120686","project\u002Fpositive\u002Fnone","codazoda",[174,31,33,212,11,37],"project\u002Fneutral\u002Fperformance",[91,32,31,214,92,33],"project\u002Fneutral\u002Fexecution",[127,32,31,214,128,33],[70,32,33,214,11,37],[134,43,37,218,111,33],"project\u002Fcritical\u002Fidea",[220,43,43,198,78,33],"36119159",[110,43,37,222,111,33],"project\u002Fcritical\u002Fperformance",[224,43,33,188,78,33],"36119220",[114,43,37,222,111,33],[227,43,33,188,78,33],"36119325",[229,43,33,203,230,33],"36119647","lmm",[232,43,33,203,233,33],"36122387","MrBuddyCasino",[235,43,33,203,236,33],"36122271","nottorp",[77,43,31,214,78,33],[239,43,33,203,240,33],"36122394","kaba0",[],[243,248,253,257,262,266],{"id":244,"name":245,"points":246,"category":247},"36128082","QR designer",711,"dev_tools",{"id":249,"name":250,"points":251,"category":252},"36070090","LLM University",303,"learning_science",{"id":254,"name":255,"points":256,"category":252},"36084503","FretboardFly",258,{"id":258,"name":259,"points":260,"category":261},"36082551","Hacker News UX",153,"consumer_social",{"id":263,"name":264,"points":265,"category":261},"36071183","HN Follow",133,{"id":267,"name":268,"points":269,"category":247},"36088359","Logicboard",87,false,"v2",{"id":273,"name":5,"line":6,"ai":270,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":274,"top":18,"kw":275,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":276,"url":9,"mix":277,"praise":84,"objection":96,"sub":21},36117037,0.05,[24,25,26,27],"3001000500005033015101000030",[31,32,33,32],1793991066659]