mxgmn / WaveFunctionCollapse

Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics
Other
23.18k stars 1.24k forks source link

Unreadable #27

Closed Vermeille closed 7 years ago

Vermeille commented 7 years ago

Hello,

The source code is seriously unreadable:

Those point are seriously hindering the amazing work that this algorithm is. No one is able to understand such code. It's even hard to make use of it.

I can help with formatting, but not refactoring since I obviously can't understand what's going on.

margaret commented 7 years ago

I started a fork earlier today where I'm just putting some comments around everything (mapping the README to the bits of the code it's relevant to, annotating the closures, etc). I'm not aiming to refactor it because I haven't written any C# before, but if anyone wants to collaborate on informal docs I'd be happy to. I am trying to get to the point where I understand it well enough to write a Python port. https://github.com/margaret/WaveFunctionCollapse/tree/docs

nanodeath commented 7 years ago

Agreed -- some of the variables can be inferred fairly easily upon inspection (FMX (width), FMY (height), T (number of patterns/combinations), N (sample size)), but others are harder, like stationary, periodic, and propagator. Would be great to get some comments on those 😄

Vermeille commented 7 years ago

margaret , that's really nice. Correcting the formatting is something that would be a first good step to make it a little more pleasant, but, sadly, not more meaningful. The two majors big steps I see are: 1) renaming variables so that they bare some more meaning, and 2) splitting the code into more smaller functions with a meaningful name.

What's the scope of the work you're doing? I could help you informally or continue where you would stop. Somewhat amusingly, I'm planning to do a talk about clean code for students of my school, that could be a case study!

mxgmn commented 7 years ago

@Vermeille Hi! What lines have the wrong indentation?

mxgmn commented 7 years ago

@nanodeath

stationary is a probability distribution that WFC reads from a sample or a tiles data file. It describes probabilities of each tile to be placed on the observation step.

periodic is a boolean variable which tells if the output should be periodic or not.

propagator contains information about which tiles/patterns agree with each other when placed nearby.

mxgmn commented 7 years ago

I'll link build instructions from the readme. Closing.