Recent posts by dragon_of_celts on Kongregate

Flag Post

Topic: Game Programming / GiTD #43 *Flying Rotating Horrors*

…And now, I present to you my entry for GiTD #43 and 1GWICGMLATM1*:
Flappy Horror.

The real horror here is the code.

I hadn’t bothered with a preloader (hopefully not really necessary, anyway).
It’s a bit dull at the moment, and not exactly pretty. There were supposed to be different creatures and artifacts and whatnot, and the rift’s power is supposed to increase over time (manifesting in increased antimatter wall movement, among other things), but right now there’s only one creature type, and two “settings” for wall movement (stopped and random — you have to wait a bit before the random starts). I need to tweak the movement values a bit, I think, too. As is, the component parts and homunculi are just basically scoring — I was intending for there to be different homunculi that could be made.

Anyway, I’m going to be away and without access to internet for a bit, so unfortunately, I’m unlikely to be able to vote or give timely reviews (which reminds me: I would prefer reviews, for those willing to give them).

* 1 Game Whenever I Can Get My Lazy Arse To Make 1

 
Flag Post

Topic: Game Programming / Sounds In Python TKinter Program: "Focus" Control Between External Program Windows

Google search brought up
this, which looked like it might be what you need (or maybe this?). These are both #3, which is not necessarily the best solution.

 
Flag Post

Topic: Collaborations / collaboration for taking game to new direction

Yes, unfortunately, there is no “newly updated” category (and probably wouldn’t be the default setting, even if there were, which means you’d likely still miss a lot of people). Kongregate’s current system encourages uploading a completely new game every time you make a major update (in other words, don’t update your old one, do it like it’s another game altogether).

Good luck on your projects.

 
Flag Post

Topic: Collaborations / collaboration for taking game to new direction

A 3.1 rating does NOT mean most people hate your game. 3 is middle-of-the-road. 5 stars is the max you can get (and very, very few will get close to that — the highest rated game is close, but not quite, 5 stars). The biggest reason why most people won’t give it a second chance is that they won’t know it has been updated unless they check your game’s page — which they’re unlikely to do unless it has been updated (unless you get rated high enough to get badges, and then actually get them). It is a great flaw in Kongregate’s system that entrenches and reinforces the badged games at the expense of all others.

I still see your game in the “newest games” list (on page 2 now). A game is “under judgement” until it gets a certain number of reviews, IIRC.

I don’t know why my IE can’t handle your game — it does most others…

 
Flag Post

Topic: Collaborations / collaboration for taking game to new direction

I don’t know about others, but I could barely get the game to respond. After clicking on the “play” button and waiting for half a minute or more, if I was lucky it would start the game — from there it only got worse. Pressing a movement key yielded no response, except occasionally, long after, it would react like I was holding the key down. It is, literally, probably the laggiest game I’ve ever encountered (and that’s saying something) as far as user input response goes. Couldn’t actually play the game enough to tell you anything about it other than that.

Edit: This appears to be a browser issue — the above was using IE 9; in Firefox the game functioned OK. Keep in mind that IE has the 2nd largest market share, according to Wikipedia, following Chrome.

Needs some spelling and grammar checks. Being able to be attacked/killed by something while checking the items/stats screens is not good, so I’d suggest an auto-pause. “Spinning item” doesn’t appear for me in the tutorial, and when I quit the tutorial after reaching the guy at the end, the “talk to this guy?” box appears under the main menu buttons. Being able to see what changing a stat does before you change it is important, especially if the user can’t change it back afterward.

An indicator that a skill is currently selected and pending would be good (I can select “Ground Pound” and walk around for a while, but there is no indicator that it is the action that will occur the next time I click). Since skills apparently have a max level, a # of # would be nice (e.g., level 1 of 7 or 1/7). Personally, I never bothered using anything but Ground Pound and my basic attack…

No magic hammer anywhere — all bandits dead, all boxes looted. Also, it should be noted somewhere that leaving items laying about to pick up later won’t work, as they’ll disappear.

Not a bad game, but needs a better ending. And if the guy guarding the cave is for an area not implemented yet, I’d make it invisible to players until it is.

 
Flag Post

Topic: Game Programming / Animating via code plus other issues

The simplest way is to have a completely separate animation for walking and attacking at the same time (for however many directions are relevant). The more complicated way is to break your character into parts, making sure they align at all the proper places, so the relevant part would be concerned with the relevant action: the feet would stand/walk/jump/etc, the arms would stay still/swing (from walking)/attack/etc, the face would exhibit an expression based on player’s status, and what have you.

Is that what you meant?

I think most programmers opt for the simple way.

 
Flag Post

Topic: Game Programming / Deleting letters

Originally posted by AshAbeAdd:

The textfield is what showing the person’s typing. Then when it is entered, or maybe at the same time it’s being pressed it goes into an array.

“Maybe”? You don’t know? Isn’t it your code?

Here is what I’m assuming, based on what you’ve said so far (and my understanding of it):
User types, and the keystroke is captured, as in most Flash applications. You check to see if the key code is for backspace or enter. You push the key code onto an array — hopefully if you receive a backspace you’re popping the last character off of the array instead. Each time you receive a keystroke, you update the TextField to reflect what has been typed by joining the elements of the array and setting the text of the TextField to the resulting String. Yes?

You are getting the glyph because the backspace character is being added to your String — and it shouldn’t be.

// let's say that your character array is called typedChars, and your TextField is called assembledText
// inside function where you handle key presses (pseudo-code):
if (keyCode == BACKSPACE)
{
   typedChars.pop();
}
else if (keyCode is alphaNumeric)  // yes, remember, this is pseudo-code
{
   typedChars.push(keyCode);
}
assembledText.text = typedChars.join("");

Note that in the pseudo-code above, the key code that contains the backspace never touches the array, nor the TextField. You shouldn’t need to screw around with the visible property in order to not show the backspace glyph because it shouldn’t ever be in the array or the TextField in the first place.

If I’m off base or you don’t know what I’m saying, show us your code.

Originally posted by AshAbeAdd:

My main question now and somewhat what I really wanted to know at the start of this discussion is, how can I change the character glyph to give a different glyph.

You mean like “if (keyCode == BACKSPACE) typedChars.push(somethingElse);”? You aren’t going to change the assigned glyph, but you can substitute something else… but you don’t need to do that if you just handle it properly in the first place.

 
Flag Post

Topic: Game Programming / Deleting letters

Originally posted by AshAbeAdd:

Well, usually, after hitting backspace or the second time, there will be a black box with a white circle inside, and it would be the spot of the first deleted character. So if I had 8 characters, and deleted twice, then the 7th block will be blank, and the 8th would have the symbol. Again if I had 8 and deleted 5 times, then I would have a empty slot in the 4th block and the 5th to 8th slot would have the same symbol.

It is the character glyph for backspace (0×08 — not the spade, as you previously mentioned, which is 0×06).

So you ARE pushing the backspace onto the array, then (or replacing the deleted character with the backspace character)?

@player_03: Unless I’m mistaken, he means the array elements. He’s pushing the entered keystrokes into an array.

 
Flag Post

Topic: Game Programming / Deleting letters

So if you’re explicitly checking for backspace (and, I presume, eliminating the last previously-entered character, and NOT putting the backspace into the array), where does the symbol come in? Unless you’re still pushing the backspace character onto the character array, how would you get a symbol? Please explain, or better yet, let’s see some code.

 
Flag Post

Topic: Game Design / Time Sweeper - Arcade Shoot 'em Up

Originally posted by PylBatu:

Just for clarification, movement is not set to a grid. It seems my decision for the quirky movement mechanics (exaggerated movement momentum for Sweeper) has crossed the line of being too weird, I guess.

Ah, I see that if I take long strides I can change my position. I was trying to get closer to the top edge of the play area, and kept getting bounced back to the same position (quite a ways away). I tried moving away and back again, but I seemed to end up in the same place, so it appeared that I couldn’t move freely. Normally, smaller movement yields greater control than larger movement, not less. My apologies.

Originally posted by PylBatu:

And, I never thought the sound effect for timebending is painful, contrary to what I initially believed — I thought it was cool. Lol.

If I press the timebend key and release it, it does make a cool sound effect. The problem is that generally one needs to hold the key down for a bit, and the sound effect gets really, really, REALLY loud very quickly (not to mention the sound effect becomes lost in what is basically a loud buzz). I imagine this is because you have a sound effect that gets repeatedly played, each new play overlapping older ones. Each overlap increases volume and harmonics until you get an ear-splitting wall of noise. You could possibly have a counter for how many timebend sfx are currently playing, and only allow another one to play if the counter is below a certain number. Once one stops, decrement the counter, which will allow another to start.

Take all feedback (including mine) with a grain of salt.

 
Flag Post

Topic: Game Design / Time Sweeper - Arcade Shoot 'em Up

Not bad. It certainly has some interesting ideas.

Movement seems to be set to a grid, so that I can’t freely move where I’d like to — which wouldn’t necessarily be that big of a deal, except the enemies aren’t forced to the same positions. It feels a bit incongruous. The forced strafing to hit some targets coupled with the randomized shot offset makes it somewhat frustrating. Add to that hampered dodging ability (as I can’t stop between two shots, for example, unless they happen to be around the grid space). It’s too bad, because I really don’t mind the slightly odd movement dynamic (in and of itself, I kind of like it), but not for this game as it is now.

Shield usage as a toggle is OK, I guess, but shield use is limited and likely only to be used for short periods. Since there is no ammo, energy depletion from firing, or targets that one should avoid hitting, auto-fire would make the most sense — you could have the W/up key for charging a large super shot (stop auto-fire while charging) — but short of that, switching the toggle from shields to firing would be best.

The tutorial text should be advanceable by the player. That will ensure that the player gets to read it all (without having to go through the tutorial again from the start because they missed something) and keep faster readers from having to wait longer than necessary. Some of the tutorial “pages” should wait for the specified action (the firing page, for example, will go on to say “Great! You’re getting the hang of it!” even if I don’t bother firing).

The sound effect for timebending is rather painful. Annoying sound effects should be reserved for bad things, like taking damage (if you have them at all).

While there are new enemies that come in fairly regularly (I don’t know how many types you have, as I haven’t played that far in — I think I’ve only seen 5 or 6 so far), some other feeling of progression would do wonders for this game. Segmenting the game into waves or levels is the simplest way to do this (if a little bland and conventional). Some sort of target would be better (say, sweeping the route to Saturn) — it’s basically a long wave/level where you feel like you’ve arrived somewhere at the end. You could do different missions (sweep route, sweep for x time, sweep x enemies, etc. Bonus points for allowing “mop-ups” — there was one top-down shooter I remember from ages back that would let you go a second pass to take out targets that you missed. I wish more shooter games would incorporate that).

 
Flag Post

Topic: Game Programming / GiTD #43 *Flying Rotating Horrors*

Noun: sword
Verb: jump
Adjective: mercurial
Game Mechanic: parallax scrolling

 
Flag Post

Topic: Game Programming / As3, how do i write this?

Why do you have 3 different MovieClips for different grass types? Do they do anything besides look like grass? If you have all 3 grass images in one .gif/.png/.whatever, you can choose the image to display using scrollRect. You can have a simple int var for type if you need to determine which grass type it is:

public class Grass extends MovieClip
{
   public static const TYPE_SPIKY:int = 0;
   public static const TYPE_PATCHY:int = 1;
   public static const TYPE_TALL:int = 2;
   public static const IMG_WIDTH:Number = 50;   // or whatever your image width of ONE grass pic is

   protected var type:int;

   public function Grass(newType:int)
   {
      type = newType;
      scrollRect.x = type * IMG_WIDTH;   // assuming you have them aligned horizontally
   }
}

If you only want certain grass types on certain layers (I think that’s what you want, right? I’m not entirely sure what you’re trying to do), check the type var of the Grass object:

// Grass object instantiation
grassy:Grass = new Grass(Grass.TYPE_PATCHY);
 
if (grassy.getType() == Grass.TYPE_PATCHY)
{
   patchyLayer.addChild(grassy);
}
 
Flag Post

Topic: Game Programming / Deleting letters

Oh. I thought you were being sarcastic.

 
Flag Post

Topic: Game Programming / Deleting letters

While ordinarily 0×07 produces the bell sound, there is, in fact, a glyph for that code (in some cases). The spade character he is getting is actually for 0×06, and backspace is 0×08, though, so I’m not sure why he’s getting that instead…

 
Flag Post

Topic: Game Programming / Deleting letters

I obviously don’t get what he’s trying to do… Why not just set text to an empty String (textfield.text = "")? Isn’t that how one clears a TextField (even if using images: the images, according to Adobe, are displayed using HTML in TextField’s text String)?

Originally posted by AshAbeAdd:

Hi. I’m wondering, because when I code my Input system to have one character removed if the backspace is used, it does that. However it also give a spade symbol. I was wondering if that’s in the library or compiler program. What can I do to make it be like a space symbol or “empty”? I tried removing the slot that get erased, but that doesn’t help.

The first 31 characters are control characters, which are not normally printable — however, they do, in some cases, have a printable glyph. You would need to test and substitute when you receive keystrokes (so if you receive a backspace keystroke, you don’t push that character onto your array, but pop one off and discard both the backspace and the popped character).

…assuming I understand what you’re trying to do and what your problem is…

 
Flag Post

Topic: Game Programming / What is an 'Object' and 'Class'?

A class is like a pattern or recipe. An object is the item you create from it.

public class Cake
{
  public static const TYPE_DEVILSFOOD:int = 0;
  public static const TYPE_ANGELSFOOD:int = 1;
  public static const TYPE_MORTALSFOOD:int = 2;

  protected var lie:Boolean;
  protected var type:int;

  public function Cake(mix:int, fake:Boolean = true)
  {
    type = mix;
  }

  public function isALie():Boolean
  {
    return lie;
  }
}

To make a Cake object from the above class, you would declare a variable of type Cake and assign a new Cake instance to it (the term for creating an object from a class is called instantiation):

  protected var mycake:Cake = new Cake(Cake.TYPE_MORTALSFOOD, false);

In the case of my Cake class, it requires parametres to be set whenever one is created by stating values inside the parentheses of the new Cake statement (these values are called arguments). The first is an int telling the Cake what it is made of (in this case, it is to be a fictional “Mortal’s Food” cake). The second is an optional argument, stating whether or not the Cake is a lie. It is optional because we state a default value for it (fake:Boolean = true) — the Cake is always a lie unless we state otherwise.

A class may extend another class — that is, it contains the full “pattern” or “recipe” of the class you’re extending, plus whatever you decide to add to it. The extended class is called a subclass of the class it has extended (which is called a superclass).

public allows access of a variable or function from anywhere.
private allows access of a variable or function from inside the declaring class only. Any subclasses will not have access.
protected allows access of a variable or function from the declaring class or any subclass of that class.

You may be wondering about the public static const declarations. These are names assigned to a value that never changes (const stands for constant), and that value is the same for all Cakes (static); because they are the same for all Cakes, their value exists within the class itself, and can be accessed without first creating a Cake object (Cake.TYPE_MORTALSFOOD accesses the Cake class’ value for the TYPE_MORTALSFOOD name). “Why not just use new Cake(2, false)?”, you ask? Because by declaring and using the constants, we don’t have to remember or look up what the value for TYPE_MORTALSFOOD is, and if we change TYPE_MORTALSFOOD to another value, we don’t have to also change the places we create a new Cake (because it will still be Cake.TYPE_MORTALSFOOD), and we avoid what are called “magic numbers” (numbers that appear in code that is not immediately apparent what their value represents).

 
Flag Post

Topic: Game Programming / Any developers willing to help design a game?

Originally posted by Shalmezad:

Might as well throw out an unreasonable bid since we’re throwing out numbers (your fault for not picking a number).

Meanwhile, over in another thread of a similar topic:

Originally posted by EndlessSporadic:

A very important saying when looking for or posting a job – the first person to say a number loses.

This message brought to you by Psychics Anonymous

 
Flag Post

Topic: Game Programming / GiTD #42 *Voting*

I guess I should’ve worked on Pirate Pac after all, eh? Maybe the rules should state that if there’s only one entry, the deadline will be extended???

1st – Pirate Rage
One spends the entire time skirting the edges of the screen, as it is the best course for avoiding the homing ship, which also happens to be the best course for avoiding all the chaos in the centre. The thunderclouds were the only thing that changed that up, and that only required a course reversal (clockwise to counter-clockwise). The rebound from hitting the edge of the screen is incongruous, too — I would suggest a “current” that pushes you in toward the centre that gets stronger the closer you are to the edge (might have to move Rum Island and Market Port out a bit, though), which dissipates at maybe ~100 pixels from the edge. Not sure where the hitboxes are for the pink things, since I’ve been touched by them and unharmed… Also, freezing the game until the player presses a key (after clicking “Play”) would be good. Nice variety of hazards, though. Points off, of course, for being late, but as it is a playable game…

2nd – Anti-idle digging thing
OK, so there’s nothing to do yet but make the skeleton do his digging dance and get XP for it. No issues that I could see. Could be interesting, once you get it going. What will happen when he finds bones? Bonus points for applying the pirate theme to a genre not usually associated with pirates.

PirateGame
When I first saw this, the ship was small, and moved and turned easily (but it felt more like playing a spaceship than a sea vessel). The cannons fired correctly. Now, the ship is huge and feels slower (which feels a bit more like a sea vessel, really), but the turning doesn’t look/feel nearly as good (even though it’s probably the same as before…?), and the cannons always fire toward the top and bottom of the screen, regardless of ship orientation. All in all, I think the one I saw first was better. You should heavily trim any velocities that are not in the facing direction (the further from the facing angle, the heavier the trim per movement cycle).

 
Flag Post

Topic: Game Programming / GiTD #42 - *Pirates*

Originally posted by feartehstickman:

Being able to sticky the GiTD threads would be really useful, but without an active mod’s help, not really possible.

I’m not sure that that’s true. When I come to the forums, my eyes automatically skip down to the unstickied threads, because that’s generally where the interesting activity occurs. I have to remind myself to look at the stickied threads to see if there are any changes/updates. I don’t know how many others do that, but how many times has someone asked a question that is clearly listed as one of the stickied threads?

Originally posted by feartehstickman:

[…] I’d prefer a contest with lots of participants where not every entry and vote is from someone well-known. This adds the possibility of people using alts to sway the vote, but without any prize, I don’t really see how that would be an enormous issue. Attracting new people will likely add more variety to entries, and we should hopefully see more interesting and amazing things.

I agree.

Originally posted by Halysia:

I’m simply suggesting that voters respect the devs wishes in receiving feedback. If people want to receive feedback nothing changes. It doesn’t take a lot of effort to read: “Feedback requested / No Feedback”

I think that’s a good idea. If someone fails to specify which they want, there could be a “Feedback optional” tag as well. I generally force myself to give a review even when I don’t feel I have much to say about a game because I would want the reviews, and just ignore the unconstructive ones.

Though I might suggest somewhat of a compromise, in that 1st place votes might require a review? They would be unlikely to be overly critical (as they are for the winning position), and would keep the potential “new-to-Kongregate voter-out-of-the-blue” that we’ve seen on occasion in check.

 
Flag Post

Topic: Game Programming / GiTD #42 - *Pirates*

Well, feedback I give is meant to be constructive, but I could see how one might take them as bad. So if any of my reviews have hurt anyone’s feelings or caused them to get discouraged, I apologize.

 
Flag Post

Topic: Game Programming / GiTD #42 - *Pirates*

Originally posted by Shalmezad:

“extremely rough prototype”. There were 2 little things I was hoping to do, but would’ve missed the deadline. 1) Position the skeleton in the bottom middle, and put a “bottom of the hole” there. And 2) As you dig, you find random “things” that contribute to your exp/gold.

Oh, OK. I thought maybe there may have been something “happening” that wasn’t happening, if you know what I mean.

Although I’ve been noticing a lower and lower turn out recently. May need to cut GiTD back to every other month, or figure out something to up the participation rate (again, open to any and all suggestions).

I recall the same observation just before “_______ or Die” became one of the most participated-in GiTDs in my admittedly spotty recollection.

If you’re up for it, try the following for the next GiTD:
Increase the theme selection criteria to one noun, one verb, one adjective, and one game mechanic. The noun, verb, and adjective all have to be prominent in the entries, but the game mechanic doesn’t have to be (but it does have to be there somewhere (that can be reached/seen without extensive play)) — I suggest that for the game mechanic only to address any concerns about ending up with many games that are too similar. Suggestion selections should be “dispersed” (if JoeShmoe123 suggests a noun, verb, adjective, and game mechanic, only one of his suggestions can be used — subject to the number of selections received, of course).

My theory is that, apart from those who just can’t do it because of external obligations, there are those who are just stumped for ideas (though I can’t fathom how anyone wouldn’t be able to think of something that they can skin with pirates — Pacman would be ideal… Crap! Pacman would’ve been ideal!). Personally, I haven’t had an entry for over a year and a half because I am the god of procrastination and laziness (Procralazny, to which I ascended deep in adulthood — by misfortune also the name of a hemorrhoid medication), but that’s another story entirely (I’ve actually started work (loosely speaking) on an entry for most of the GiTDs since the last one I entered).

Anyway, I figure the extended theme criteria will do several things: 1) allow participation in theme selection to feel more inclusive, 2) make pre-made game entries less likely (not that I think there are any now), 3) potentially create some truly interesting/bizarre themes, and 4) possibly help anyone that is stumped for ideas.

Or it won’t. Only one way to find out.

 
Flag Post

Topic: Game Programming / GiTD #42 - *Pirates*

What happened to the people that wanted the pirate theme?

Anyway, Shalmezad, your prototype does the following things for me: when I click or press a directional key, the skeleton in the upper left does a little dig, my experience points increase by 1 (and eventually I level up, whatever that’s supposed to entail), and all the brown in the background moves up by a bit. I never get any gold, nor can I move, nor is there anything (including holes) other than that. I mention this because I get the feeling that there is supposed to be (and not in a “to do list” kind of way). Is there more that’s supposed to be happening?

 
Flag Post

Topic: Game Programming / The anormal case of the pear [FINALLY SOLVED YEEEEEEEEE!]

The code works, okay. That doesn’t mean that it doesn’t have parts that can be excised. Maybe oldPearContainer does something, but I don’t see how: nothing, in the code on this page that I can see, ever adds anything to it, nor does it do anything but removeChildren (which, if it never has children, won’t do anything).

953 wrote, I assume regarding oldCoinContainer: ‘Your coin “animation” only has one additional frame. I picked the shortcut of putting them in a container that is cleaned every frame.’

OK, I’ll take his word for it, but I don’t see where that’s happening. Where is anything put in the container? Please point to the line(s) of code where this happens, because for the life of me, I can’t see it.

My browser finds exactly 3 lines with “oldCoinContainer” in it:
private var oldCoinContainer:Sprite = new Sprite();

(creates an empty, new Sprite called oldCoinContainer — by “empty”, I mean it has no children, nor has any image been assigned to it)

addChild(oldCoinContainer);

(adds the oldCoinContainer Sprite to the display list, which might be useful if it had an image to display… but it doesn’t)

oldCoinContainer.removeChildren();

(removes any children that oldCoinContainer may have. The number of children it will be removing? Zero. Why? Because no children have been added to it. At all. Ever. Unless, of course, I am missing something (always a possibility))

 
Flag Post

Topic: Game Programming / The anormal case of the pear [FINALLY SOLVED YEEEEEEEEE!]

You don’t actually appear to be using oldPearContainer for anything: you create it, add it to the stage and removeChildren (you haven’t added any, so there shouldn’t be anything to remove)… As it is a blank Sprite that you haven’t added anything to (including a Bitmap image), it is invisible. Comment out all references to it and see if it makes any difference.

So let me see if I understand this: When ball hits save (another Ball object), pears are saved? I thought the intention was to save it whenever a pear was taken, so shouldn’t the savePears function call be inside the pear collision check block?

Sorry if I’m missing something obvious.