{"id":282,"date":"2019-12-31T13:05:55","date_gmt":"2019-12-31T13:05:55","guid":{"rendered":"http:\/\/heptamind.com\/?p=282"},"modified":"2019-12-31T13:05:55","modified_gmt":"2019-12-31T13:05:55","slug":"reviewing-what-i-did-on-mmm-in-2019","status":"publish","type":"post","link":"https:\/\/heptamind.com\/index.php\/2019\/12\/31\/reviewing-what-i-did-on-mmm-in-2019\/","title":{"rendered":"Reviewing what I did on MMM in 2019"},"content":{"rendered":"\n<p>2019 is\nin its final hours and I&#8217;m looking back at the year and what I did for MMM. At\nfirst I feel like I got nothing accomplished, so many things I hoped to\nimplement this year, I totally overcommitted. I am working on this on the side,\nand I need to remember this. Anyway, it isn&#8217;t true that I didn&#8217;t accomplish\nanything. When I look back and compare v1.0 with what I have now in testing,\nthere are some nice advancements. So, let&#8217;s look at some of the things I did.\nI&#8217;m actively trying to make this as non-techy as possible.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">SessionMaker merged into main Unity project<\/h4>\n\n\n\n<p>So many\nrequests for the SessionMaker were impossible to implement with the old one. It\nwas it&#8217;s own project with only thew most basic code shared (manually) to make\nsure that the file format handling was consistent. But requested features like\na preview or a spiral editor (and a few more) couldn&#8217;t be done in that project,\nthere was nothing that could reliably playback the session or effects in\nSessionMaker and if I tried that it would have meant to rebuild code that was\nalready in the main project and always in danger of still having differences in\nhow it looked. So, I completely recreated the SessionMaker in the main MMM\nproject, with a slighly improved UI and functionality. In itself it doesn&#8217;t\nfeel like too much of an imrovement over the old SessionMaker, but this allows\nme to implement so much greater features in the future. I also made sure to\ndecouple a lot of the UI code from the actual session creation so that I can\ncreate a VR version as well, meaning that someday you will be able to create your\nsessions from within MMM, no longer bound to use the standalone editor. The new\nSessionMaker will be released together with v1.2 of MMM.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Build automation<\/h4>\n\n\n\n<p>Back when\nI released MMM v1.0 I had to manually build each target manually. This took a\nfull day of my time and it was error-prone. If I set one checkmark wrong or had\na typo in an option it could mean a few hours of switching platform,\nreconfiguring, building and uploading. But nowadays, if I want to create a new\nversion, I check a few settings and start Unity cloud build. Each platform has\nits own little script that sets up everything itself, platform options,\nincluded scenes, build settings, app signing, VR options, quality settings,\netc. and it works for MMM and the SessionMaker as well. Sure, cloud build still\ntakes several hours to finish all 9 targets, but there&#8217;s no manual work\ninvolved after updating a build number and pushing that change to the correct\ngit branch. After that I trigger those builds and can then focus on something\nelse.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">New main menu scene<\/h4>\n\n\n\n<p>I built a\nnew island scene, looks better (according to testers) and even performs a bit\nbetter. The GUI itself also improved a bit and looks somewhat cleaner. For now\nI think it&#8217;s quite nice.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Updated the project to the latest version of Unity and rebuilt WiFi\ntransfer<\/h4>\n\n\n\n<p>All store\nreleases were done in Unity 2017.1 and I was reluctant updating since\neverything I looked into it there were tons of errors, outdated plugins, and a\nfew things that were no longer working due to deprecated code. But earlier this\nyear I decided I could no longer put it off, I had to update things while\nimplementing a few things in SessionMaker. I threw out a few plugins, replacing\nthem with different, newer ones. I rewrote code that formerly used deprecated\nfunctions. The biggest problem was the wireless transfer. It heavily depended\non an old and outdated plugin that was using networking code that was no longer\npossible with the latest Unity. Now I am doing the look-around with my own code\nand the main connection &amp; file transfer is me using&nbsp; a C# library, completely independent from\nwhat Unity provides. While I definitely made the error of trying to get around\nthat by using (multiple) Unity plugins, I fortunately realized that doing int\nmyself was the smarter choice. This is one of my biggest wins for 2019 in\nregards of this project.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Reworked local file import<\/h4>\n\n\n\n<p>I always\nfelt the inbuilt file browser was always clumsy and unwieldy. While it did get\nthe job done (at least most of the time), it was always a hassle using it. I\ngot rid of it. There&#8217;s now a defined import folder, put your files there by\nyour favorite means, and MMM offers a cleaner interface where you can easily\nimport any number of sessions in it. Much faster, cleaner, and no more clumsy\nfolder navigation. Look forward to v1.2 for this.<\/p>\n\n\n\n<p>Well, now\nI know what I did with my time and energy I had for MMM and now you do, too.\nFor 2020 I make no promises, there are a lot of features I want to implement,\nbut you&#8217;ll get them when they are done, It&#8217;s no use getting you hyped for\nanything that I haven&#8217;t even started to work on. That said, I will definitely\nwork on v1.2 and I am really close to releasing it. With that I wish you a\ngreat New Year&#8217;s Eve! May 2020 be a wonderful year for you all!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>2019 is in its final hours and I&#8217;m looking back at the year and what I did for MMM. At first I [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-282","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/posts\/282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/comments?post=282"}],"version-history":[{"count":4,"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/posts\/282\/revisions"}],"predecessor-version":[{"id":286,"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/posts\/282\/revisions\/286"}],"wp:attachment":[{"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/media?parent=282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/categories?post=282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/heptamind.com\/index.php\/wp-json\/wp\/v2\/tags?post=282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}