This forum is read only and just serves as an archive. If you
have any questions, please post them on github.com/phoboslab/impact
1 decade ago
by Seeders
My Only Friend, The End is my take on the popular tower defense genre, in the theme of zombie survival.
Screenshot
Zombies spawn in waves at random locations around the edge of the map. Your goal is to build a fortress to protect your farms and hold off the onslaught as long as possible.
Build and protect farms to generate food to get more defenders. Each wave you get 3 food per farm, and lose 1 food per defender.
Currently 3 Defender types - Farmers, Marines, and Walls. More on the way.
4 Zombie types - Basic zombie, Bats (unaffected by terrain), Serpent Parasites (move best in water, explode in to serpents upon killing them), and Chargers (move faster the more you damage them).
5 Tile Types - Water, Sand, Grass, Forest, and Rock.
Zombies are affected in different ways by the terrain.
Its a project I've been working on for a few months, and still a lot of things left to add. Upgrades, more weapons, more zombies, map editor, the works!
I'm using the
Box2D plugin if anyone is curious, and have found it performs very well once you figure out how it works and optimize your calculations.
1 decade ago
by Arantor
Nice, though generally you're supposed to use the Bake script (as per the docs) before posting it publicly...
1 decade ago
by Seeders
I'm not too worried about people stealing it.
1 decade ago
by Arantor
Maybe, but it's a violation of the licence terms.
1 decade ago
by Seeders
uhhh oops.
Edit: wait i just read the terms and didn't see that mentioned anywhere.
Edit 2: Tried to bake, but get an error when I run it now: "unexpected token : illegal"
Edit 3: Looks like I had some encoding issue, fixed now.
I dont see how this would be a violation of license terms. Its not like anyone can't just de-minify the javascript...
It's not about "stealing" your source, it's about the engine itself.
By not baking the source you are essentially giving everyone access to your copy of Impact that you paid for. Basically you are redistributing the game engine source... which could be considered a violation.
Other than the performance benefits of baking you should do it mainly out of courtesy to the developer.. something that is encouraged! ;)
If you are having errors you may just need to clear your browser cache.
1 decade ago
by Arantor
Especially as the level editor is available through your website, which definitely breaks the licence.
1 decade ago
by Seeders
Thanks for the info guys, all news to me.
Anyway, baked and removed the weltmeister. The only performance improvement from baking is the initial download of the scripts because it makes one request instead of one per file. Besides that it should run exactly the same.
Exactly right... that's all you can expect from combined, minified source.
1 decade ago
by Seeders
So with all the technical crap out of the way...anyone try the game?
:)
hey seeders,
i played a bit, and its a really nice game! with random generated levels?
1 decade ago
by Seeders
yep the map gets generated everytime you load the page, but I want to add the ability to create your own seed, your own map, or save a randomly generated map if you like it.
1 decade ago
by Arantor
The only problem with that (licence aside) is that essentially you need to consider application security; a user can overwrite anyone else's maps without a login system, also... there's not really a great deal of security in how the existing level editor works - any such system really needs to have such to prevent all kinds of nasty injections.
<honesty alert>
I played the game for 1 minute or so (about 3 to 4 levels). Overall, I didn't like it. I found its visuals unappealing, mechanics awkward, and game play boring.
I know I'd hate to read stuff like that about one of my games but I'm assuming that you were not fishing for compliments, but rather hoping to get an honest (if harsh) opinion.
Keep trying, though. You're way ahead of most of us in that department. You did something and showed the (Impact) world, so kudos, and don't give up.
1 decade ago
by Seeders
visuals unappealing
totally understood and agreed.
mechanics awkward
honestly surprised. what did you find awkward about the mechanics? Its nothing but click to place dudes, then click to shoot.
game play boring
The first few waves are meant to introduce the basic gameplay elements. you have to go further than level 4 to get to the meat of the game. I think at level 4 you've killed about 7 dudes. You can use the mouse to shoot through the first 10 or so waves very quickly.
I disliked the game mechanics for the following (subjective?) reasons:
1. inability to fire a second shot while a previous one is in flight
2. it seems like the shots travel too fast for the frame rate: a shot seems visible at several positions simultaneously (Opera browser)
3. aiming feels wrong: you're not using lasers to fire at the NPCs, so there should be some kind of range limit. Right now, your aim dictates the direction of your shot but never its target: just set it so that a target is in its path and you're set.
About game play: it's not clear what role each of the 2 characters to the side of the house have to play, nor why seem shots to be coming from the house. Things such as one character attacking the other (if so, neat idea) happened a bit too fast to register.
Game play though cannot be planned for. I would suggest improvements to mechanics first, and see how that impacts the feel of the game.
BTW, that was subjective of course. Other people's opinions could help narrow it down.
A.
PS: clicks to place dudes? How? The dudes seem glued to their places (by the side of the house)
1 decade ago
by ryan
I just played a round and think this is great. Lots of potential. Going to play another round.
I just looked at your screenshot and see one can place walls and entities in the game world. That changes the dynamics a lot, making for a more interesting game. You should make it more clear that there is a placement stage after every round.
I'd still want different mechanics but regardless, game play is definitely improved with the placement functionality.
1 decade ago
by Seeders
I posted a lot of info in the original post, you might have missed it.
At the bottom you'll see a bunch of icons, which are the things you can build. The prices for each of the units is the top number, and the bottom number is the hotkey.
The first one is the Dozer, which you dont actually build, but use to destroy things that you have built.
Then the wall, which blocks zombies or you can use to craft their path.
Then a farm. Farms are expensive, but give you food. You need to build them to generate more food to feed more guys to help you defend. Farms generate more food the longer you've protected them.
Then the farmer, which has a shotgun and fires 3 bullets, but at a low range.
And the marine, who has a longer range machine gun but does less damage.
Feedback like this is great though. I haven't thought much about telling the player about the rounds, because I already know its a tower defense game. I think I'll make a little intro sequence, and then make it night time when the zombies come, and daytime when you can place your buildings.
I played a few more levels of your game. The placement definitely makes it more interesting. Now it seems that the units you place fire automatically at a zombie once it is in range of the unit, so why the cursor? Or does that only direct shots fired from inside the house? Tough to tell as the animation is happening very fast.
Still, as you can see, I probably represent one of thousands of players who do not read manuals very carefully and who "judge a book by its cover", for better or for worse.
-- edited
By the way, I like the idea of "defend at night, patch up in daytime" a lot.
1 decade ago
by Chmood
Though the artworks of the game would need a little makeup, I enjoyed playing it.
As said before, It wasn't clear to me that I could build things or place gunners at the end of each wave.
I also wondered why there's an "active" aiming, in addition to the "passive" folks shooting on their own will.
Could you explain a bit further how box2d works in your game ? I didn't notice much physical interaction, but I'd like to know what usage you made of it.
Very good work, keep improving it !
1 decade ago
by Seeders
I'm using box2d for collision detection with bullets, as well as AABB queries to find zombies in range of each human instead of iterating through every zombie for every human. I'll also use AABB queries for area of effect damage/abilities (like explosions). I can also create pulses at certain locations, and all box2d objects will get knocked back from the center of that location.
The active aiming is there so that you can help defend yourself at night. I felt it keeps the player involved instead of making them sit back and watch their guys defend. I plan to have upgrades to both your built units, and your personal weapon so that you have to choose what you want to make stronger.
Seeders, I got a chance to play your game and I think it's pretty good. I was wondering how you got the AABB queries implemented, I'm trying to figure out how to do those for a game I'm working on. It's an adventure game, but I'm trying to implement context sensitive controls where the player could click to move (touch on mobile) and then if an enemy is nearby if they click (or touch) it will automatically attack the enemy. I was hoping to implement this by doing an AABB query on the targeted click position and then see what Enemy entities are inside the query. So if you get a chance I'd like to see how you implemented the AABB queries :)
Also how did you do the tower range highlight ? That was a pretty cool feature.
1 decade ago
by Seeders
The tower range is done with the regular canvas api, I just drew semi transparent circles on my foreground canvas. To get the location i transformed my mouse coordinates to tile coordinates, and drew a circle who's center is at the center of that tile.
As for the AABB query, here is the query each human runs to find enemies in range.
var aabb = new b2.AABB();
aabb.lowerBound.Set(this.pos.x * b2.SCALE - this.prange * b2.SCALE, this.pos.y * b2.SCALE - this.prange * b2.SCALE );
aabb.upperBound.Set(this.pos.x * b2.SCALE + this.prange * b2.SCALE, this.pos.y * b2.SCALE + this.prange * b2.SCALE );
var creeps = new Array();
var entitiesInRange = ig.world.Query(aabb, creeps, 10);
if(entitiesInRange > 0){
for(var i = 0; i < entitiesInRange; i++){
if(!(creeps[i] === undefined) && !(creeps[i] === null)){
var creep = creeps[i].GetUserData();
...
Nice game! Got to wave 11, I like the unit where the sneaks come out :)
Seeders - thanks a ton for showing how to do the AABB queries, that really helps alot. I think someone should compile all the box2d info and give it to Dom to put in the documentation :)
It's not really an official part of the engine but if was someone was so inclined it would fit very nice in the community wiki documentation over at
http://www.pointofimpactjs.com ;)
1 decade ago
by Seeders
Quote from LaserBeam
Nice game! Got to wave 11, I like the unit where the sneaks come out :)
awesome, glad you like it!
1 decade ago
by Seeders
Quote from Disdanes
Seeders - thanks a ton for showing how to do the AABB queries, that really helps alot. I think someone should compile all the box2d info and give it to Dom to put in the documentation :)
The link to the manual on the documentation page is the best resource ive found, along with a few other tutorials from google. if you need help with something in particular just ask around :)