{"id":111,"date":"2013-11-24T08:42:21","date_gmt":"2013-11-24T08:42:21","guid":{"rendered":"http:\/\/blog.restemeier.com\/?p=111"},"modified":"2014-05-02T14:17:51","modified_gmt":"2014-05-02T14:17:51","slug":"gleed2d-as-level-editor","status":"publish","type":"post","link":"http:\/\/blog.restemeier.com\/?p=111","title":{"rendered":"GLEED2D as Level Editor"},"content":{"rendered":"<p><a href=\"http:\/\/gleed2d.codeplex.com\/\">GLEED2D<\/a> is written in <a href=\"http:\/\/en.wikipedia.org\/wiki\/C_Sharp_(programming_language)\">C#<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Microsoft_XNA\">XNA<\/a>. It uses an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Xml\">XML<\/a> file format so it was easy to import a <a href=\"http:\/\/pingus.seul.org\/\">Pingus <\/a>level:<\/p>\n<div id=\"attachment_134\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-gleed2d.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-134\" class=\"size-medium wp-image-134\" alt=\"Pingus in GLEED2D\" src=\"http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-gleed2d-300x164.png\" width=\"300\" height=\"164\" srcset=\"http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-gleed2d-300x164.png 300w, http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-gleed2d-1024x560.png 1024w, http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-gleed2d-624x341.png 624w, http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-gleed2d.png 1920w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-134\" class=\"wp-caption-text\">Pingus in GLEED2D<\/p><\/div>\n<p>The editor rounds up texture sizes to the next <a href=\"http:\/\/en.wikipedia.org\/wiki\/Power_of_two\">power of two<\/a>,\u00a0and scale factors and the rotation origin are relative to this scaled up size. That makes importing and exporting levels slightly more complicated.\u00a0In most cases I would pack background sprites into an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Texture_atlas\">atlas<\/a> before rendering, so I can&#8217;t think of many reasons for expanding individual sprites to power of two.<\/p>\n<p>Level drawing and editing is very fast, and the image browser makes it very fast to add new sprites to a level. You can specify custom properties, but they are attached to a sprite instance and not a sprite definition.\u00a0It is possible to specify programs to run after a level is saved or to preview a level in a game.<\/p>\n<p>Documentation seems to be only available as videos, which I find more time consuming than reading documentation, especially when I need to look up specific features.<\/p>\n<p>The image browser caused an exception when displaying a large sprite directory. I&#8217;m not sure if it ran into a windows resource limit or just failed to load a file, but I think for a proper project you would organise sprites into smaller subdirectories anyway.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>GLEED2D is written in C# and XNA. It uses an XML file format so it was easy to import a Pingus level: The editor rounds up texture sizes to the next power of two,\u00a0and scale factors and the rotation origin are relative to this scaled up size. That makes importing and exporting levels slightly more [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,8],"tags":[],"class_list":["post-111","post","type-post","status-publish","format-standard","hentry","category-gleed2d","category-level-editing"],"_links":{"self":[{"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts\/111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=111"}],"version-history":[{"count":5,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts\/111\/revisions"}],"predecessor-version":[{"id":192,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts\/111\/revisions\/192"}],"wp:attachment":[{"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=111"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}