Recent posts by jasonjie88 on Kongregate

Flag Post

Topic: Reactor idle / Game Playiable on Tablets except....

The game is made using HTML5 afaik. So in theory you could play the game on a tablet. Problem is, tablets always register tapping as left-clicking, so you can’t really right-click to sell your buildings. So hate to say it, but I guess you’re on your own there. Sorry about that.

Flag Post

Topic: Reactor idle / Boiler house clarification

I’ve recently got the boiler houses I need to move to gas. The boiler houses claim they will sell heat in bulk if the heat exceeds a certain amount.

So my question is, if you have two heat sinks next to a boiler house with 18000 heat, will the boiler house sell 18000 heat from each tile, or sell 18000 heat total?

Flag Post

Topic: Card Hunter / Deja vu

Is it just me or does the beginning of this game look exactly the same to a certain mobile game called Loot and Legends…?

Flag Post

Topic: Swords & Potions / Looking For Members

May I join?

Flag Post

Topic: Kongregate Multiplayer Games / [Coraabia] "Fresh Blood"-Tournament 23. 5. 2015

Looks good!

Hey UderApanuj, I was just wondering if you have heard of the Kongregate High Scores API. You can add it to your game, and if your game gets a high enough rating, Greg will add badges to your game on this site! A lot of people play games on this site to get badges, so it’ll also increase traffic and any moolah you make from Kongregate.

Your game is pretty close to achieving the rating needed to get badges, and it doesn’t seem too difficult to implement. I’m sure a lot of players like me would also love to see your game get badges for the excellent work you’ve put into this game. But it’s your call.

Here’s a link if you’re interested in finding out more about how to implement badges, as well as where to get the API from. See you around!

Flag Post

Topic: Cardinal Quest 2 / Tower scoring?

I was wondering how the Tower is scored? Is it possible to log a score of 120,000 in the tower if by some miracle you survive 60 floors?

Flag Post

Topic: Game Design / Simplistic game too simplistic?

I’ve got one word for you: Tetris.

It can’t be a game if it cannot be lost.

What about Super Meat Boy? Does that mean dying a crap ton of times mean that you lose every time you play the level?

Wikipedia defines “game” as “structured playing, usually undertaken for enjoyment and sometimes used as an educational tool.”1 They come in all shapes and sizes. Let’s be honest. Crawford’s wrong. When you have no conflict, you have a puzzle game. Also, competition is found in many games that require skill and speed to complete. Especially if you’re either racing against the clock to get a medal for completing a level fast enough or you’re up against a grading system.

So forget Crawford. If it’s something that’s fun to play that either somehow poses a challenge, whether in the puzzle or skill sense, or is simply aesthetically pleasing, or some other reason I haven’t included here, it’s a game.

Whether you disagree or not, the point still stands though. overactor, only being able to use one button in a game doesn’t really qualify as a game. It has no interactivity, poses no challenge, has no entertainment value. Not a game.


Flag Post

Topic: Game Design / [Design] Visual Indicators of Effects

Here’s a couple ideas:

Maintaining Momentum: Because the portals are by default one-way, the output portal color does not matter. This contrasts with the original Portal, where separate portal colors were needed to define the two different portals (and in case you needed to move one portal to another location). Use a red colour (#FF0000) for portals that maintain momentum, and blue (#0000FF) for portals that do not maintain momentum.1

Platform Generating Portals: While your suggestion of a grey bar is a good idea, the player may also want to know how big the platform will be, as well as what is underneath said platform. I suggest you render the mesh of the platform. This allows the player to see through the platform, as well as see the size of the platform. A bit like this:

…but without all the lines in the middle of the cube mesh (which obscure vision).

Edit: Pardon the giant picture. I have absolutely no idea how to shrink it, or if there is even a way to shrink it.

Relative teleportation: This one is difficult. If your portals are on static surfaces, where the player is teleporting to is easy to predict. However, if the portal is moving, that’s a lot harder. There may a solution to that, though. Do you remember Portal 2? The game allowed you to see portals through walls and other obstruction. By projecting where the portal will lead to as part of the rendering… well, it might help.

Following: I’m not entirely sure how “following works”. Because following would mean projecting the portal onto the closest wall… or floor. Which, in this case, would be the floor directly under the player… which will teleport the player to a different location. That would lead to a lot of problems. But if you find a way to control that problem… just add a cyan colour (#00FFFF) with a low alpha to the portal’s interior render. In this way the player will see that this portal is different 1

These ideas are not perfect, but they may help a little bit.

1 Red, cyan and blue are more easily distinguished by color-blind people and you can actually use whatever color you want. I’m just sticking with these colors because they’re easily recognizable.

Flag Post

Topic: Game Design / How to (not)make a Pay2Win game?

Pay2win in my opinion is when money is required to win the game. Otherwise the game is either impossible to win (you have to buy the “full” version, expansion packs or a subscription membership) or otherwise incredibly difficult. I think this is comparable to the game machines of the 1980s (to win the game, you had to insert more coins when you died, otherwise, you wouldn’t be able to win/aspire to the top of the high scores list).

IMO these sort of games group players into three categories. The first two categories consist of hardcore gamers. This type of gamer is easily classifiable; the first type are people who have a low budget but are incredibly talented. They’ll try to get as far as possible without spending too much and, in many cases, nothing at all. Then you have the second type: untalented people with a high budget. And by high budget I mean enough to buy out the best equipment. Typically hard-core gamers fit into both categories – a bit of money, and a bit of talent.

Then you have the last category – normal players. Untalented – at least not able to play well enough – and either can’t or won’t buy better equipment. This type of gamer is more likely to complain “the game is too hard” and say that the game is entirely pay-to-win. While it is inevitable that you are going to get these sorts of people (high-key gaming is not for everybody and cannot be held by everybody in a ranking scenario), you want to accommodate as many gamers as possible. Even normal players want to have fun, and if they see people with bought equipment winning them over every time, that fun is going to be ruined, because gaming in a lot of instances is about skill too.

I reckon pay2win is a case of balance, actually. There’s nothing wrong with commercializing the game a little if it means you’ll make some more revenue/money. But make the prices too steep, and you have a problem on your hands. If you don’t want players to complain not being able to own the best equipment is because the game is too commercial, you’ll have to find a way to cater to most players. This can be a very hard thing to do, because it’ll require finding out what sort of advertising of equipment works better, how sales improve prices, looking for the ceterus parabus of selling prices of stuff, etc. etc. Different things will sway the gaming population, and those things will be different in different games. Finding out what sways that population is a matter of experimentation.

One more thing: in a membership scenario, I would suggest not to point out what normal players would be missing out on in a membership, because I reckon it adds a commercial look to the game. And by that I mean showing what quests, items and what-not can only be owned by members. Although you will inevitably have to find a way to advertise membership, showing this sort of thing to normal players is negative advertising. It points out what the player is missing out on just because the player doesn’t have a membership. That’s a negative message, and that’s not as good as a positive message when it comes to advertising.

But anyway. Hope this helps.

Flag Post

Topic: Game Programming / Standard for setting up a game in Flash

Are you using Adobe Flash? If so, try to avoid stage code. It is for the most part considered messy code.

Under Properties > Class, you can add a target class that will run the entire code.

Flag Post

Topic: Game Programming / how should a 13 year old programmer put a game into kong

Sorry, quick question… Would a portfolio matter if trying to sell games on FGL?

Flag Post

Topic: Game Programming / Fun with Math

I’ve got another solution!

If we are to seperate the points in a unique way, we need some sort of method that will ensure that there is a minimum distance between pixels. If we triangulate the points, the minimum distance serves as a perfect way o calculatign a minimum distance between pixels! Also, if we attach triangles to the side of the original triangle, the points will be seperated cleanly, and we will know there is a minimum distance.

1) Determine the origin on the bitmap. This origin will be considered as point (0,0).
2) Mark (0,0) with a red pixel on the bitmap.
3) Assume that there is a circle with the origin as its center and a radius of 4. (For the record, assumptions are not drawn. Just assumed.)
4) Determine a seed, which will contain a number between 0 and 180. For now, let us call this seed delta.
5) Assume there is a vertical line running from (0,0) to (0, -4).
6) Assume that the vertical line is the angle bisector of a sector of the circle assumed in Step 2. The sector has central angle delta degrees.
7) Assume a horizontal tangent that runs along the line y=-4.
8) Extend the lines of the sector (step 6) and determine where the lines intersect the aforementioned tangent. Plot these points on the bitmap.
9) The angles formed by the sector lines with the tangent are (180 – (2 * delta)) degrees.
10) Assume two lines attached to the intersections formed in step 8 such the lines are double the angles mentioned in step 9, and are tangential to the circle. Determine where the lines intersect.
11) Plot the intersection of the two lines in step 10.

By now you have something like this:

I is the point plotted in step 2, line IM~B~ is the vertical line in step 5, line AC is the tangent in step 7, points A and C were plotted in step 8 using extensions of the sector formed by lines IA and IC, and B was plotted in step 11 forming triangle ABC.

12) For the three sides, assume three normals that intersect the midpoints of the three sides of the triangle. Assume that these normals move away from the sides of the triangle to concide with the centres of circles of radius 4.

13) For each side, assume that there are lines moving from the side’s endpoints to the centres of the circles mentioned in the step above. Determine the angles said lines make with the side itself.

14) Repeat steps 9-14 recursively, but replace delta with the value found in step 13.

This is the simplest implementation of the psuedo-random code above. The method basically attempts to create a triangulation of points from a pre-determined incircle, a sector and a tangent, and then marks the incircle as a point. Then it creates incircles with the sides as tangents, and then creates another triangluation of points with two of the points being the side from the original triangle. As long as the triangles created do not intersect one another, the points will have a distance of at least 8 pixels between each other.

Because this is the simplest implementation, the code here will only create isosceles triangles and then mark the points and the incircle. However, note that a triangle can be created from any tangent and any sector, as long as the extension of the sector lines hit the tangent.

Anyway, hope this helps, and I hope you’re not too confused by my explanation. :D

Flag Post

Topic: Game Programming / Graphic Filters/Shaders

You think Adobe will try to correct the PB problem in FP 11.9?

Flag Post

Topic: Game Design / Is it possible for a flash game to have a good story?

Necro much again?

Flag Post

Topic: Game Programming / Is my game hacked on Kong?

No, your game is not hacked, but this method of downloading your game leaves it open to theft. People who download your game can upload it to sites you haven’t uploaded it to, effectively stealing your game.

There are methods to prevent this from happening. These methods are known as encryption methods, where the game data is encoded so others cannot download the game. However, bear in mind that these methods do not work all of the time, and in some cases disable your game.

There are a lot of SWF encryption software titles on the market (both free and paid). From what I’ve heard FGL (Flash Game License aka the Flash game market) comes with its own encryption software called Kindisoft. But I haven’t used it, and I most certainly cannot give you any personal experience with it. I also believe that you need to pay commission on what you earn on FGL to use it, but once again, you’re going to have to look at it for yourself.

Anyway. Hope this answers your questions.

Flag Post

Topic: Game Design / Whatever you do, don't make THIS kind of game

Originally posted by UnknownGuardian:
Originally posted by GameBuilder15:

I don’t think there’s any problem with retro and pixel.

Try selling them.

Well, Monaco did. They got an Excellence in Design AND the Seamus McNally Grand Prize to boot. Half of their artwork was pixel, so they didn’t go too bad.

And UG, why not space? Space has been included in many games . This includes Flash games . I wouldn’t count them out of the competition just yet.

Flag Post

Topic: Game Design / What makes a good mining game?

A game that is to be played for hours on end while retaining its original value? Mining by itself easy thing to do, but to turn it into a role-playing game is a bit harder. I mean, take Minecraft, for example. Perfect example of a mining game, but without a storyline. This effectively creates a sandboxed world with unlimited potential, but it’s not an RPG because, if it were, the sandbox game mechanic would have constraints, effectively making it less like a sandbox.

Well, for starters, you ARE making a mining game. Mining is pretty much the equivalent of excavating a site for minerals, so you will be “digging up” stuff that is otherwise hidden from your view. Installing a secrets system will probably help help. If you must, you can also add an “Item completion” bar so the player knows what he/she has to look for.

Whether you want to make a procedurally generated world is entirely up to you. If it is within your realm of your programming skills, I would highly suggest its implementation. A procedurally generated world means that players will not have a “walkthrough”, per se, because the world’s not the same on each playthrough. The players have to find everything by themselves instead.

NPCs is a toughie. NPCs could give quests that give rewards, or reveal information about the location of secrets. That would help establish an RPG setting, but in a procedurally generated world, NPCs could be hard to implement. Bear that in mind.

Enemies are easier to implement by just spawning them in a random location that is not blocked off by a block. Just make them interesting. If you wish, you could also give them backstories, and maybe a way to their hive to “turn off” their spawning for an indefinite amount of time. (Of course, here you give the difficulty a spike).

Dialogue trees are good, because it give depth to an RPG, but in a procedurally generated world, because of the random nature of the world, that will be very hard to implement.

In other words, pretty much most of the game mechanics you find in Mining Utopia, Glean and Minecraft, but to turn it into an RPG, you need to give it some sort of backbone. A dialogue tree, NPCs you can interact with, and maybe big bosses. However, if you read the stuff above, you’ll see how hard that is to do from a programmer’s perspective. It won’t be easy to implement, and I haven’t seen any games that have done this before, so you’re probably a first. So good luck!

Flag Post

Topic: Game Programming / Inverse Cellular Automation

There is no way to know that an empty grid used to have living cells in it that died off.

Well, of course not. But I’m assuming that my grid isn’t empty. I mean, trying to calculate generation (n-1) where generation n is an empty set is kind of pointless. I’m also probably going to run into a similar problem when calculating a stable set – or one that consists of oscillators, for that matter.

So, let me rephrase the question.

Given a set generation n which isn’t empty, stable, or consists of oscillators, would it be possible to find generation (n-1) in the cellular automaton Conway’s Game of Life?

Flag Post

Topic: Game Programming / Inverse Cellular Automation

So I’ve been looking at cellular automata lately for my next project, and I’ve been looking at Conway’s Game of Life. I was wondering if there was any way I could compute Conway’s Game of Life… backwards. You know… getting a particular arrangement of cells, naming it generation n… and then try and find generation (n-1).

I mean, it sounds really hard. If the current generation’s cell arrangements aren’t considered stable, they won’t be the same as the last generation’s cell arrangements. I think the solution would be to get the current cell arrangement, and then place and remove cells such the final cell arrangement would compute to the current generation. But that’s the hard bit. If I place or remove n cells, I will have to delete or replace the same n cells to get the current generation’s cell arrangements. So how would I go about doing that for any cell arrangement placed in the cellular automaton Conway’s Game of Life?

P.S. There are probably heaps of solutions to generation (n-1) for some cell arrangements. However, because I’m only looking for a method, even just one solution will suffice.

Flag Post

Topic: Game Programming / Need help with tower defense shoot logic

Well, I’ll try to help. I don’t know how easy it will be. I also don’t know how to implement this. I don’t even have all the theory to this yet. I’m just trying to help you with the theory alone, because I just don’t have much time these days.

The best way to go about this is to scan where the enemies are to move next… while minimizing processor cost. So let’s dive in.

Before beginning, add a state variable to your tower class. That way you know if the towers are shooting or reloading. This is vital for memory conservation.

First off. Only enemies that are inside the tower’s range should be checked. Depending on how many towers you have, that saves valuable processor time.

Now, for enemies inside the tower. How they are hit is a complex matter. It depends on enemy speed, bullet speed, where the enemy is moving in the next second, and so on. In other words, a lot of stuff. So we’re going to have to do a lot to focus on the enemy.

Fortunately, our work is cut out for us. Typical TD towers focus on shooting down the enemy that is in front of the pack. So we just have to focus on one unit per tower.

There are three questions that you will have to ask your trusty tower:

1) When will the tower be loaded and ready to fire?
2) Will my enemy be out of range before I am loaded?
3) Where can I fire my bullet so A) it is in range and B) I hit the enemy?

Question 1 is important because you will need to know this for question 2.

Question 2 is when you find out where the enemy will be when the tower is loaded and ready to fire. If the enemy is out of range, switch to the next enemy and begin again.

Question 3 is where the maths comes in!

1) Find a corner that is in range of the turret. If there are no corners, use the point where the enemy crosses the circle and goes out of range.
2) Find how far away that point is from the enemy (ed).
3) Find how far away the same point is from the tower (td).
4) Get the bullet speed (bs) and divide it by the enemy speed (es) to get the speed ratio (sr).
5) Multiply sr by td to get r.
6) If r is greater than or equal to ed, then the bullet will hit the enemy, so continue to step 7. If not, go to step 1 and use another corner. If there are no other corners, use the point where the enemy crosses the circle and goes out of range. If the point used was where the enemy goes out of range, the enemy will not be hit. Cycle to the enemy that is next in line.
7) If r equals ed, the calculations are complete. The tower can fire a bullet at that point. If r is greater than ed, move to the next step.
8) I’m still working on this…

You see, step 8 requires me to look for the exact next point where the bullet coincides with the enemy. If r is greater than ed, it gives me an indication that the bullet will hit the enemy somewhere on the line. But it doesn’t tell me where. But these calculations are getting somewhere, I’m sure of it. I just need time to think. I’ll keep you posted.

Flag Post

Topic: Game Programming / Need help with tower defense shoot logic

There are a LOT of parameters that you’ll need to think about. It all depends on bullet speed, enemy speed, and the map layout. Even after parameters are sorted, there are a LOT of implications that a “perfect” firing AI will have.

Firstly, if an enemy is moving out of turret range, but is still in the tower’s range. Of course, the tower sees the enemy and fires… out of said tower’s range. If the bullet hits, then there is the implicit error that the tower’s range extends farther than is suggested on the UI.

Hitting an enemy that stays in range is even harder. The enemy may move closer to or farther away from the tower. If that’s the case, the tower will find it extremely hard to actually hit the enemy, because the time taken for the bullet to hit the enemy fluctuates. The only option would be to scan the path for where the enemy could be hit. And that may or may not be processor-intensive… unless you’re really good at optimization. The proverb is right – it IS harder to hit a moving target.

And here’s the whammy… if the enemy is either A) hit by a slowing bullet or B) recovers from a slowing bullet effect AFTER the bullet is fired, the bullet may miss altogether, depending on how fast the enemies travel. This would make the AI prone to error. And that’s not a good thing, for an AI that’s actually supposed to be perfect and never miss every time.

The implications of a perfect firing system in a TD are not good. On the other hand, using a bullet homing system looks like fool’s play. It’s your call, but you won’t get much freedom with a bullet homing system. Trust me, and listen to everyone else.

Flag Post

Topic: Game Programming / Making flash games... need help

Originally posted by GameBuilder15:

BadgehunterSven, my advice is to do a little everyday. If you keep at it, you will make a lot of progress.

Originally posted by Amibtious:

Common beginner problems:
The 0 you think of is too much for a beginner.
You plan too many & too complex features in 1.

I’d say a bigger problem is not knowing how to design a good game. It’s not that easy.

I reckon we’re all missing the point here.

Let’s say you decided to make a bullet hell game. You have all the necessary skills – no more, no less. You program the players, the ships, the bullets – you may even have a bit of OOP on your side to make bosses have ship extensions. You can even code the intricate bullet patterns that are characteristic of bullet hells.

And guess what? When you’ve finished, it will be absolutely rubbish. The computer just does not have the memory capacity to hit-test thousands of bullets simultaneously. You just NEED to find a way to make it better. You don’t know, but it’s definitely something to do with the hit-testing. There’s just too many hit-tests. If only you could reduce the number of hit-tests. But you never had, and don’t have the knowledge to know how to do that.

And that’s where optimization comes in.

Design and programming are one thing. But in all the programming tutorials that I read a couple of years back, I never read anything about optimization. Unfortunately, when you first learn to program, you act like computers have unlimited capacity to do things. But you only act like that because you’re doing easy stuff. Stuff that is not CPU-intensive. But when it comes down to the crunch, if you’re ever going to be good at anything in programming, you need to learn to get more at less memory cost. Seriously, I’ll admit it myself. I had crappy programming skills – until I read Keith Peters. Then it actually made me interested in improving my code. So I got the book Real-Time Collision Detection, where you learn about bounding boxes, point to line hit-testing, and so on. Then I learnt about blitting, and using Pixel Bender. BOOM! Optimization made me feel I could code better. Instantly. (After I read everything, of course.)

No, seriously. All beginners need to learn the importance of optimization. Programming is not about concept and how-to. It’s about improvisation to make the code solid, with less computational time. It’s like solving a Rubik’s cube. You can try moving your hands faster to solve the cube even faster. But it’s nothing compared to halving the number of moves needed to solve the same cube.

Flag Post

Topic: Game Programming / Map Construction

Well, if you want to avoid boring areas of your game… just add a classic pick-up collection quest because they just never fail. Pretty much every game has one of the sort. However you distribute them is your call. You have a LOT of choice, though. Do you:

-Distribute the pickups throughout a level, and make them fill up a bonus meter…

…that will take you to a bonus level that provides a extra challenge that will allow you to receive special items?

(Ripple Dot Zero)

Or will said pickups lead to an optional ending?

(Seedling) (The treasure chests have fragments that lead to an optional ending)

Even a harder difficulty?

(Snailiad) (Collecting all 30 snail shells in the giant world leads to a harder difficulty)

All the games above have been considered exceptional by players (at least 3.5 rating, in fact Snailiad is still 4.0). You can make the game harder by including $h1tloads of secret passages like (especially) Snailiad, and including a pickup meter hints it’s the key to sumthin’ special. (And you’ll probably want to add that special thing in, or there will be GREAT RAGE.) But looking for stuff you can’t see will improve game time, so players will try everything to find every little niche of the game that actually has something and that’s what makes the game interesting. But once again, your call. Badges on this site will increase gamer appeal, but you’ll need them to give you that rating first. Sadly.

Hope this also helps :D

PS Before you ask, no, I did not get this from The Art of Game Design. In fact, I’ve never actually read it.

PPS There’s actually a lot on that TV tropes website. Everything actually links to other interesting things, so you might like to have a look. It’s not a game design website, but it’s still pretty cool.

Flag Post

Topic: Game Programming / MMO hosting and services

Well, I’ll drop in a couple names. Note that some are free and some are not. I’m only including commercial because generally it takes a lot to beat commercial servers. Or so I think anyway. Either way, here goes.

ElectroServer is commercial. Yeah, I know it sucks to begin with a commercial server, but bear with.

SmartFoxServer – yeah, commercial too, but it’s used by corporate giants. IBM, McDonalds, Disney. Designed by Italian company goToAndPlay(). Don’t have pricing at the moment, but look it up and you’ll find it.

Red5 Media Server is free and open-source. But that’s all I can say. There’s no other information I have on me at the moment, so you’re going to have to dig around.

Wowza Media Server is commercial. Once again, no info.

FluorineFX Server is free and open-source. It also allows for AIR integration and then some. Click on the link to find out more.

Flussonic Server is commercial. I also didn’t know about it ‘til 5 minutes ago. Still, guess it’s worth looking at, right? 50% off for the first 30 days.

Union Platform is free… up to 1000 simultaneous users. Ask me, it’s better than Player.IO’s 500 users for its free plan. So do look at this one.

I actually found most of these through Google. Though I did hear about a multiplayer platform called Artillery about a year ago, though back then it was still a WIP. I wonder if they finished it?

Also I recall remember the Unreal Engine featuring online game networking as well. Just like UnrealScript was C++ pushed through an engine, Unreal Engine turned Netcode into its own language, Kismet. Their payment plans are commision based (i.e. they’re free up to the first $50,000 you earn. They’ll take 10% of anything you earn after that $50,000. Which is pretty OK, since I haven’t heard of a Flash game selling for $50,000. But that’s just me.) Either way, I reckon Unreal Engine officially counts, ’cause they port to Flash.

I’ve been trying to figure out what server Realm of the Mad God runs on, because it runs extremely smoothly for a synchronous bullet hell. I’m guessing it was made from Player.IO (but I say guess, because there’s no logo and there’s no mention of the server name on their wiki. The Player.IO Plus Plan upwards features a “No logo” bonus, which is why I guess that server.)

So there you are. Hope this helps :D

Major source here. Click the third item.

Flag Post

Topic: Game Programming / Map Construction

I think I’ve got a solution for your pathfinding problem.

From what I’ve read, your player is twice as long and twice as wide as the wall blocks, right? Kind of like the picture below. If your wall blocks are the size of one of the small squares, the player is the size of the big square (all four small squares combined).

Now, the four squares are connected such they intersect at one center point. The idea is you construct a map that consists of only areas the player can move in. So analyze an area of four squares. If all four spaces are walkable, turn the four spaces into one big walkable space, and add it to a separate map that can be used for pathfinding. If at least one space is not walkable, turn the four spaces into one big unwalkable space, and add it to the same pathfinding map.


Say you build a 10×10 array for a level, where 0 is walkable and 1 is not:


Now, look at the first two rows. The entire top row is unwalkable. This means the player cannot move into any of those blocks. So the player cannot move anywhere in the first two rows. Let’s add that to a separate array that will be used for pathfinding:


Now for the second and third rows. The player cannot move into the left-most combination of four squares, as the left row of squares is unwalkable. But beside it… the adjacent combination is walkable! So the first number of the second row of the pathfinding map is 0 1, but the second number of the same row is 1 0.

Working through the second and third rows of the level map, we get a sequence of numbers like the one below, and add it to the pathfinding map.


Carrying on in such fashion, we get an entire pathfinding map.


And there you have it! An entire pathfinding map that’s generated from an entire level! You can now apply an A* algorithm to the pathfinding array, and monsters can become “smarter” using the pathfinding map.

I don’t really know how you’re going to program the game, but if you don’t want to give secret passages away by having monsters walking through them, you can code into the pathfinding map generator that secret passages are unwalkable for monsters, but not the player. Because the pathfinding map also gives a list of the only places the player can traverse, you can use it for more efficient hit-testing as well. But all that’s your call (unless you ask).

The only thing I didn’t understand about your question was:

Only have to lay things out once (no design then redraw for physics)

When you mean “lay things out once”, do you mean not having to draw the level twice? I’m also not entirely sure what you mean by physics, either. Either way, I hope this post reaches you and I hope I’ve answered your question properly.

I haven’t had the time to place this into code, but I hope you understand how to do it, and I REALLY hope this helps. :D

PS Wish I knew how to enlarge block code. Would’ve used block code to highlight the arrays, but it made all the text tiny on the brink of invisible. Bloomin’ pain in the bum.