{"id":72,"date":"2013-10-10T09:32:34","date_gmt":"2013-10-10T09:32:34","guid":{"rendered":"http:\/\/blog.restemeier.com\/?p=72"},"modified":"2014-05-11T08:27:51","modified_gmt":"2014-05-11T08:27:51","slug":"inkscape-as-a-level-editor","status":"publish","type":"post","link":"http:\/\/blog.restemeier.com\/?p=72","title":{"rendered":"Inkscape as a Level Editor"},"content":{"rendered":"<p>Ubisoft recently released <a href=\"http:\/\/rayman.ubi.com\/legends\/\">Rayman Legends<\/a> and I was quite impressed by the <a href=\"http:\/\/ubi-art.uk.ubi.com\/\">UBIart Framework<\/a> demos:<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/y-chi097uV4\" height=\"315\" width=\"560\" allowfullscreen=\"\" frameborder=\"0\"><\/iframe><\/p>\n<p>They developed a free form level editor, with what looks like procedural texture generation to fit graphics to collision data. It looks very powerful, but for now it is only available for Ubisoft projects. I am sure we will see some open source clones at some point, and there are already some <a href=\"http:\/\/youtu.be\/B1F6fi04qw8\">interesting developments<\/a> for\u00a0<a href=\"http:\/\/unity3d.com\/\">Unity3D<\/a>.<\/p>\n<p>Many of the level editors accessible to independent developers so far focus on grid and tile based level layouts, but I wanted to investigate what editors are available for a more free form level layout.<\/p>\n<p>To start I had a look at\u00a0<a href=\"http:\/\/inkscape.org\/\">Inkscape<\/a>, which\u00a0is an open source vector graphics editor available on many platforms, that reads and writes <a href=\"http:\/\/en.wikipedia.org\/wiki\/Svg\">SVG<\/a> files. SVG is a standard format, so you can import and export it from many applications, and you can even preview it in many web browsers.\u00a0You can add custom data that can be picked up by a game engine to control collisions or gameplay elements.\u00a0To test this out I took a test level from\u00a0<a href=\"http:\/\/pingus.seul.org\/\">Pingus<\/a>\u00a0and imported it into Inkscape, similar to the way that is described in this <a href=\"http:\/\/duriansoftware.com\/joe\/Using-Inkscape-as-a-map-editor.html\">blog post<\/a>.<\/p>\n<div id=\"attachment_135\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-inkscape1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-135\" class=\"size-medium wp-image-135\" alt=\"Pingus in Inkscape\" src=\"http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-inkscape1-300x171.png\" width=\"300\" height=\"171\" srcset=\"http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-inkscape1-300x171.png 300w, http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-inkscape1-1024x583.png 1024w, http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-inkscape1-624x355.png 624w, http:\/\/blog.restemeier.com\/wp-content\/uploads\/2013\/10\/pingus-inkscape1.png 1712w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-135\" class=\"wp-caption-text\">Pingus in Inkscape<\/p><\/div>\n<p>Pingus has a built in level editor and uses a simple text based level format based on LISP. It&#8217;s easy to read with a simple <a href=\"http:\/\/www.python.org\/\">Python <\/a>script and to write out as a SVG scene graph.<\/p>\n<p>Inkscape performance on OSX is not very good, which I assume is a combination of the SVG rendering code in combination with using GTK+ through X11. Though the performance isn&#8217;t very good on Windows either. I am sure one of the key reasons for that is the complexity (and power) of SVG rendering, which makes it important to post process a SVG scene into more hardware-friendly data.\u00a0You will have to decide which subset of features can be used to build levels or\u00a0you may have to spend a lot of time implementing SVG features.<\/p>\n<p>Inkscape doesn&#8217;t seem to have a built in mechanism to organise clip art or object libraries. A workaround for that is to put templates for your game objects onto a different layer outside the level and to clone them onto your level.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ubisoft recently released Rayman Legends and I was quite impressed by the UBIart Framework demos: They developed a free form level editor, with what looks like procedural texture generation to fit graphics to collision data. It looks very powerful, but for now it is only available for Ubisoft projects. I am sure we will see [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,8],"tags":[],"class_list":["post-72","post","type-post","status-publish","format-standard","hentry","category-inkscape","category-level-editing"],"_links":{"self":[{"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts\/72","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=72"}],"version-history":[{"count":21,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts\/72\/revisions"}],"predecessor-version":[{"id":140,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=\/wp\/v2\/posts\/72\/revisions\/140"}],"wp:attachment":[{"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.restemeier.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}