[{"data":1,"prerenderedAt":259},["ShallowReactive",2],{"project-7652874":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":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":40,"post_text":43,"what":44,"said":65,"maker_in_thread":159,"shape":166,"grid":170,"attempts":223,"same_week":224,"maker_shows":30,"maker_hidden":251,"reader_version":252,"card":253},"7652874","Isomer","An isometric graphics library for HTML5 Canvas","title","Show HN: Isomer – An isometric graphics library for HTML5 Canvas","http:\u002F\u002Fjdan.github.io\u002Fisomer\u002F","jdan.github.io","prezjordan",1398548812,2014,181,23,119,2272,6,"notable","languages","graphics library","library",[24,25,21,26],"isometric","html5 canvas","javascript","loved",0.267,{"positive":30,"neutral":31,"mixed":32,"critical":32},4,10,0,14,{"idea":35,"performance":36,"design":37,"execution":38,"docs":39},{"positive":30,"critical":32},{"positive":32,"critical":32},{"positive":32,"critical":32},{"positive":32,"critical":32},{"positive":32,"critical":32},[41,32,32,42,32,32,42,32,41,41,42,32,41,42,42,42,32,42,42,32,42,42,32],5,3,null,{"problem":45,"audience":43,"pricing":43,"motivation":54,"time_to_build":43,"stack":59,"openness":64,"stage":64,"team_size":64},{"value":46,"source":47,"evidence":48},"Drawing isometric 3D-style graphics on HTML5 Canvas","inferred",[49,51],{"id":50},"post",{"id":52,"by":11,"text":53},"7653223","Thanks! I'm not totally sure how far I'd like to take this. The original intent was to make some art with it, since I played a lot of Monument Valley [1] a few weeks ago. I'd…",{"value":55,"source":56,"evidence":57},"Making art, inspired by playing Monument Valley","maker",[58],{"id":52,"by":11,"text":53},[60],{"value":61,"source":56,"evidence":62},"HTML5 Canvas",[63],{"id":50},"unknown",{"praise":66,"objections":91,"requests":98,"questions":121,"alternatives":133},[67,83],{"value":68,"source":69,"evidence":70},"Looks great and useful for graphics and art","commenter",[71,75,79],{"id":72,"by":73,"text":74},"7653177","pradn","Looks pretty wonderful. I can see a lot more usecases if you had support for mouse-events. Being able to select objects will enable tons of games and such.",{"id":76,"by":77,"text":78},"7653654","gavanwoolery","Looks great! Is the depth sorting inherent or manually specified? I notice that there is one Escher-esque shape (maybe this shape is defined as a whole then sorted?).",{"id":80,"by":81,"text":82},"7653889","rayshan","Looks awesome, would definitely make something cool looking with this. I googled and saw that there are a few isometric game engines out there already. This would be pretty…",{"value":84,"source":69,"evidence":85},"Could enable games with mouse events",[86,87],{"id":72,"by":73,"text":74},{"id":88,"by":89,"text":90},"7653550","moeamaya","I agree, click and drag along orthogonal paths and dropping objects in a new place would allow interesting game mechanics to ensue. Also it would be alter the conceptual…",[92],{"value":93,"source":56,"evidence":94},"Depth sorting is naive and shape ordering is manual",[95],{"id":96,"by":11,"text":97},"7653661","Both - but my depth sorting technique is incredibly naive. \"Shapes\" consist of many \"Paths\" (paths = faces). If you draw a shape, it will attempt to order its faces. Instead, you…",[99,104,114],{"value":100,"source":69,"evidence":101},"Mouse event support and object selection",[102,103],{"id":72,"by":73,"text":74},{"id":88,"by":89,"text":90},{"value":105,"source":69,"evidence":106},"Animation support",[107,111],{"id":108,"by":109,"text":110},"7653220","eusonic","What would it take to add animations?",{"id":112,"by":11,"text":113},"7653236","There's currently no concept of a \"scene\" (you essentially add shapes which are immediately drawn to the canvas, never saved) so animating a given shape involves changing it…",{"value":115,"source":69,"evidence":116},"TypeScript version",[117],{"id":118,"by":119,"text":120},"7654245","zura","Looks very nice. Any plans to TypeScript-ify?",[122,126],{"value":123,"source":69,"evidence":124},"Is depth sorting inherent or manual?",[125],{"id":76,"by":77,"text":78},{"value":127,"source":69,"evidence":128},"Why Point uses new but shape constructors do not",[129],{"id":130,"by":131,"text":132},"7653336","eurleif","> iso.add(Shape.Prism(new Point(0, 0, 0))); How come the constructor for Point uses new, but the constructors for shapes are just called as regular functions?",[134,145,152],{"value":135,"source":69,"evidence":136},"Isogenic Engine",[137,141],{"id":138,"by":139,"text":140},"7653991","catshirt","i've not used it myself, but Isogenic is an isometric engine that is intended for games so i'm sure it supports this kind of functionality. http:\u002F\u002Fwww.isogenicengine.com\u002F",{"id":142,"by":143,"text":144},"7655922","james33","We've been using the Isogenic Engine for over 2 years (just launched http:\u002F\u002Fcasinorpg.com last week with it). It is a great engine, though it's purpose is very different from…",{"value":146,"source":69,"evidence":147},"OpenSCAD",[148],{"id":149,"by":150,"text":151},"7655535","jdiez17","Very nice. It reminds me of OpenSCAD.",{"value":153,"source":69,"evidence":154},"Imagine canvas library",[155],{"id":156,"by":157,"text":158},"7653259","akvlad","I've been working on something similar, it's a lightweight HTML5 Canvas library, easily add\u002Fremove objects on the canvas. It also has event handling for the objects.…",{"comments":41,"answered":30,"key":160},[161,162,163],{"id":52,"text":53},{"id":96,"text":97},{"id":164,"text":165},"7653357","You can actually leave out new for Points, and Shape.Prism just returns a new Shape. Prism itself is not actually an object (or constructor for an object), it's just a function.…",{"commenters":167,"max_depth":30,"maker_replies":41,"first_comment_mins":168,"lifespan_hours":169},18,110,20,[171,173,176,179,181,183,184,186,187,191,192,194,195,198,201,204,206,207,211,215,217,219,222],[72,32,41,172,73,32],"project\u002Fpositive\u002Fidea",[52,32,32,174,11,175],"maker\u002Fneutral\u002Fidea",1,[177,32,32,178,73,32],"7653387","commenter\u002Fneutral\u002Fnone",[88,32,42,180,89,32],"project\u002Fneutral\u002Fidea",[138,32,32,182,139,32],"other\u002Fneutral\u002Fnone",[142,32,32,182,143,32],[76,175,42,185,77,32],"project\u002Fneutral\u002Fperformance",[96,175,32,185,11,175],[188,189,41,172,190,32],"7654905",2,"Gigablah",[80,42,41,172,81,32],[130,30,42,193,131,32],"project\u002Fneutral\u002Fdesign",[164,30,32,193,11,175],[196,41,41,172,197,32],"7653278","PLenz",[199,18,42,180,200,32],"7653383","buremba",[118,202,42,203,119,32],7,"project\u002Fneutral\u002Fexecution",[108,205,42,180,109,32],8,[112,205,32,203,11,175],[208,205,42,209,210,32],"7653824","maker\u002Fneutral\u002Fexecution","judk",[212,205,42,213,214,32],"7655080","maker\u002Fneutral\u002Fdocs","jimeuxx",[216,205,32,185,11,175],"7655313",[149,218,42,180,150,32],9,[220,218,42,180,221,32],"7655638","leeoniya",[156,31,32,182,157,32],[],[225,230,235,239,243,247],{"id":226,"name":227,"points":228,"category":229},"7664240","Betatype",285,"web_saas",{"id":231,"name":232,"points":233,"category":234},"7666102","Marvel",222,"dev_tools",{"id":236,"name":237,"points":238,"category":234},"7663775","Velocity.js",160,{"id":240,"name":241,"points":238,"category":242},"7677018","Life Goes On","games",{"id":244,"name":245,"points":246,"category":20},"7643084","node-read",80,{"id":248,"name":249,"points":250,"category":229},"7666761","startup job",74,false,"v2",{"id":254,"name":5,"line":6,"ai":251,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":255,"top":18,"kw":256,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":257,"url":9,"mix":258,"praise":68,"objection":93,"sub":21},7652874,0.27,[24,25,21,26],"50030030553053330330330",[30,31,32,32],1793990904959]