Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Lamest progress ever ... working on the foundation

Sign in to follow this  


Made some changes in the 2D Map creator. I modified the implementation that I had into something that can be used as a superclass.

Now game specific implementations can use the foundation and add/modify logic.
Especially the methodCreatorMap2D.prototype.forEachPixelToUpdate
comes in handy now. Iterating over one half of the array depending on the mirroring mode ... being able to reuse that with functions like this one is sweet:
CreatorMap2D.prototype.heightCellularAutomationAction = function(streamSource, map, indexX, indexY, mirrorIndexX, mirrorIndexY, neighborTopLeft, neighborTopCenter, neighborTopRight, neighborLeft, neighborRight, neighborBottomLeft, neighborBottomCenter, neighborBottomRight) { var newValueAmount = -1; var newValue = -1; var currentValueAmount; var currentValue; for (currentValue = 0; currentValue < 5; currentValue++) { currentValueAmount = 0; if (currentValue == map.mapArray[indexY][indexX]) { currentValueAmount++; } if (currentValue == neighborTopLeft) { currentValueAmount++; } if (currentValue == neighborTopCenter) { currentValueAmount++; } if (currentValue == neighborTopRight) { currentValueAmount++; } if (currentValue == neighborLeft) { currentValueAmount++; } if (currentValue == neighborRight) { currentValueAmount++; } if (currentValue == neighborBottomLeft) { currentValueAmount++; } if (currentValue == neighborBottomCenter) { currentValueAmount++; } if (currentValue == neighborBottomRight) { currentValueAmount++; } if (newValueAmount < currentValueAmount) { newValueAmount = currentValueAmount; newValue = currentValue; } else if (newValueAmount == currentValueAmount) { if (streamSource.consumeBoolean()) { newValue = currentValue; } } } map.mapArray[indexY][indexX] = newValue; map.mapArray[mirrorIndexY][mirrorIndexX] = newValue; // if ((map.mapArray.length / 2) == indexY) { // log("New height chosen: " + newValue); // }};
I was struggling with yet another bug. The maps were very biased. 0 was used almost exclusively, only at the edges other values had a decent probability. Counting the value of the current tile as well (not just the neighbors) brought the first improvement, dealing with the equal amount of tiles compared with the current maximum count in a pseudo-random way fixed the problem completely. That happens in the following code, taken from the function above: } else if (newValueAmount == currentValueAmount) { if (streamSource.consumeBoolean()) { newValue = currentValue; } }
I will write a different algorithm (which creates different levels without steep cliffs) soon and update the rendering.

The current state is pretty lame. It can be seen at ...


Sign in to follow this  


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!