The last update on development has been some time ago, hasn't it? Bad news first: I had some commissioned artworks to do. Yeah well, "bad" news. Not on a strictly personal level. More on a "Crap I couldn't write devblog" level. Good news: I just hadn't time to write a devblog, but I had the time to push PMap along. So, relax.

Where should I start, a lot has happened...


Faster is still too slow

In my last blog entry I talked about speed optimizations. And that was something that drove me over the edge of my capabilities and will be still in the weeks to come. It doesn't end with a few basic realizations of what is performant and what isnt't. It's a puzzle that needs to be solved mentally. Which constellation of operations will occur in every step and doesn't need to? Because it's costly. And how can you change your algorithm to support that realization? So I went back to ALL of the current walkers and checnged most of them. How they operate internally. It did a LOT performance wise. The trick really is to find out, which operations can be pushed to a position in your code where they occur the least. Without sacrificing on results. If anyone reading this blog is screaming "Woah! Tell me HOW and WHAT! Please!" I'll cover some of those things in detail and show some code. So, if you want to know, make yourself heard in the comments below or drop me a line.

Cleaning up

Also, I came across a few things that really made things harder. Some attributes were used in nearly every walker, but were not implemented in the base class... REFACTOR. A few mechanical remnants  from the early days of PMap were still there an weren't really used for anything... CUT. Some controls were instantiated in each custom editor... REFACTOR. You get the point. Such things. Made my life easier. I'll continue thanking myself in the weeks to come.

Things get hard

What a headline. I bought a good microphone and setup the audio interface and recording hard and software to, as some of you requested, create some videos for PMap. Those will take a bit until they really happen, but now I'm prepared. It's absolutely beyond strange to hear your own misfigured voice in the monitor. But I hope I will get used to it. I also bought Camtasia Studio by Techsmith. I'ts a pretty awesome screen recording software I already could work with some time ago. And it pretty much DOES what it's advertised to do. My first tests made me pretty happy. I don't know if my voice presence will make you happy, but hopefully the video content will ;D

A thousand ideas

I had a few conversations on reddit and a few requests and, all in all, it got my mind totally working. I had a few Ideas for walkers that I wanted to realize anyway. I did a few of those. The Gridder will create grids of values, The GridStamper will stamp RoomSnippets at grid intersections. The XOuter will annihilate crossings where you have only two blocks touching each other diagonally. Which I despise!!! Sorry. In addition I got a ton of new inspirations. People want all sort of things from procedural map creations, such like world map with biomes and such. And I thought a lot about ho to make those things happen. And, you can make it happen with PMap. I'll build a tutorial covering those uses. Of course, something like biomes will need another Walker, which I am already thinking about. As will making sure that there is connectivity between different chunks, where each chunk is a generated map. I don't know if everything will make it in for release. But I am playing with the thought of setting up a roadmap for PMap. How would you like this? Tell me in the comments below! or nudge me on Twitter.

Bugs, bugs, bugs and that other thing

Yeah. You can't really skip bugfixing, can you? So far so uninteresting, but I fixed something else that bothered me massively. The Data Visualizer. The problem was, that I used EditorGUILayout.LabelField for the representation of the numeric data. That'S cool as long as you have, let's say, 20 x 20 = 400 cells. a bit slow at times, but OK. After optimizing the generation speed, sizes of 500x500 became viable. That makes 250000 LabelFields which is pretty much overkill. If it generates, Unity will just die sometimes. If it survives, it will be a slideshow. That's not convenient at all. So I did something different. I created a sort of mini map for the data visualizer that has one pixel for each value. I also put a color system into place that colors each pixel according to that value. The actual detail data of the current map view is displayed as a 20 x 20 grid of Labelfield. That works. Just to show something to you, here's a GIF of the DataVisualizer in action.

The Visualizer shows two kinds of values. The controller values are those that are actually created using PMap. The interface values will only be there if a interface is connected. Those values represent a interpretation of the controller values by a mapping interface. This interface is the connection point to whatever you had in mind doing with your values. In my case i push the values to an AutoTiler to get a prettier map representation. You'll also notice that the visualizer can visualize different controller and interface layers. So, the Data Visualizer is basically your debugger for PMap Values.

 What's there down the line

I've got an assignment to complete, which will push things back a bit. I am pretty happy how PMap currently turns out. You can really create a fair amount of different map types at the moment. And you can do so reasonably fast. I'd like to try out a few things, like making PMap optionally work in Coroutine mode. Also bug fixing is a constant process. Things got complex. I have a list of walkers that need to make it for release. Nearly done there. But now I have a few new ideas and... ach, we'll see. And if all that weren't enough, I still need to create tutorials and complete my code documentation. I really, REALLY hope there's a way o create a documentation from the code documentation tags. Is there? Anyone? h e l p.

So, that's it for keeping you guys up to date. I can only encourage everybody to shoot me don with questions if you want to know anything. Also, if you have any comments about what you would like to see in PMap, by all means, hand them over! Also, if you like PMap and/or reading about the development here, why not share this article to all your social media. No? And, if I say please?

Anyway, so long, stay awesome!


Back to Top

(c) 2017