I’ve decided that since I have absolutely no experience whatsoever playing RPGs, that I am not a good candidate of programming one, so instead, I’m going to work on a fighting game (while I also have no experience playing a fighting game, I’d figure it’d be a lot easier programming one than an RPG.) So here’s my latest brainchild: Insect Combat. Right now, it’s just a warning screen and a title screen. The only two characters I’ve thought of so far are Gi-Ant and Behe-Moth. Any other punny names you guys can think of would also be appreciated.
Attachments:
SRAM starts at 0x06000000 if I’m not mistaken. So you should be able to just make a variable like this:
int *val = (int*)0x06000000;
And then assign to it like this:
*val += IncrementAmount;
Probably the best thing to do if you end up storing a lot of values in the SRAM is to create a class instead of a bunch of standalone values and save it in there.
*Edit
Though of course, if anyone has a better or more efficient way to get into SRAM, maybe sans a linker file, do share it! π
- This reply was modified 10 years, 5 months ago by 16-Bit.
There are some simple tricks for getting a random number. Using the timer combined with user input works pretty well. Since user input is really the only truly random aspect of gaming it works pretty well. So a combination of the timer and when for example somebody hits the start button could be a random seed for setting up enemies before a level starts. It’s pretty unlikely that a person will hit the start button at the exact same microsecond everytime they begin playing a game. Also updating a random number depending on each button push helps to. So for a simple example if the player presses up you increment the number by 1 if they push left increment by 2 if they push A increment by 5 etc… That usually gives a nice randomness to a number that can then be used anytime throughout the game. Of course you don’t need to just add, you can shift the values left and right or whatever you like.
Question: How do I read the left and right shoulder buttons (i.e. K_STA, K_SEL, etc.) I looked at the Wiki and couldn’t even find instructions on any buttons, let alone the shoulder ones.
Thanks. The place where I live is going to have intermittent power outages pretty soon (in a few days) for power line work, so it probably wouldn’t be a good time to spend hours on the game like I normally would do. I guess what I can do now is plan on what I want to do next with the game. I’m thinking, for testing purposes, having the opponent come near you and try to punch you and if you’re not pressing a shoulder button have your health meter decrease and if you are, you will be able to block it.
I had a hard time putting in opponent’s punching, especially because someone that wasn’t me changed an instance of opponenty to just opponent. I was wondering why it wouldn’t keep working until I noticed it. So now, four hours later, the opponent has the ability to punch. Just for testing purposes only, the opponent doesn’t punch very often. And you can’t block punches yet. I will work on that later when I am no longer burned out. And something else weird happened. I made a new file of this and the file saved to just 4MB instead of 8MB. I wish I knew a way to tell how much of the 4MB (or 8MB) I’m using. The new build is on the Insecticide website.
I fixed a whole bunch of bugs that happened. Let me know if you find any more.
I now have added special moves for the opponents. This took about 4 hours to do. The main problem was getting the camera to follow you when either Gi-Ant or Behe-Moth threw you. But I think I did it. Let me know if you find anything weird.
EDIT: I looked and we don’t have signatures! So I guess you couldn’t try them without a link. I was just so used to typing that at AtariAge, where they allow signatures. Here’s a .zip file.
Attachments:
It appears that the game slows down in real hardware again. So I added a couple of DoSound(); commands, and that helped get the sound back to normal again. Hopefully once all the AI is added it doesn’t do that any more.
I just wanted to say that you can download the latest version always when I update it here:
http://www.atari2600land.com/banana/ic.html
Found a bug about Rumblebee stinging. I never did find out what the cause was, but I think I fixed it. I also added you win and you lost screens.
- This reply was modified 10 years, 3 months ago by VirtualChris.
- This reply was modified 10 years, 3 months ago by VirtualChris.
I’m just wondering if I’ll ever be able to finish the game or not. The one thing standing in my way is AI. I’m just wondering how fighting video games work in that department. The thing is, I’m not that fond of fighting games, though, which I wondered why I was doing this when I came up with the idea. I guess I just thought I’d never get this far with it. Anyway, the only fighting game I have is Title Match Pro Wrestling for the Atari 2600 (I collect Atari 2600 games. I have over 300 of them.) Maybe I’ll get it out and play it or see what I can do when it comes to AI on that. Granted, any AI that would be based on an Atari 2600 game would be really simple, but simple AI is better than no AI at all. And, of course, if you want to help with this project, feel free to tell me.
I worked a little bit on changing the intro. I also worked on what you can’t do when your opponent is doing his special attack on you.
More fun.
+ Opponent now has jumping ability.
+ Fixed Behe-moth’s wing position if opponent and throwing left.
I haven’t tested this on real hardware yet. The cat is asleep in the chair right next to where I keep the Virtual Boy.
Plethora of bugs got fixed. I changed the Easy and Hard mode under “options” to “sound test.” The sound test, though, does nothing right now. I just tested the latest one on a real VB, everything works OK.
Insecticide’s official page has been moved. It’s now here.
http://www.atari2600land.com/insecticide/
Thank you.
I’ve been following this quietly, and I gotta say, it’s shaping up to be quite something!
Some feedback (tested on Mednafen):
Menus:
– The intro text scrolls really quickly, giving me almost not enough time to read it.
– Menu controls are inconsistent; select at one moment, up/down at another.
– Insect selection feels more natural with left/right than select. Also allows you to go back to a previous insect more easily.
– The credits are pretty hilarious. π
Gameplay:
– The moves take very long to finish, meaning you have to wait a fair bit, which removes from the amount of action.
– Your attack only works when you’re near the enemy. Pressing the attack button should just always initiate the attack, whether you’re close to an enemy or not.
– “You Won!” is not readable over same-color elements (like the flower). Add a black 1-2 pixel border around the text and it should become readable on any background.
Regarding the AI:
It seems the game right now works like “who attacks first?”, and who attacks first will be random. In order to add a fighting game element to this, you need to be able to:
– have a defensive move;
– Have more than one offensive move;
– have the enemy telegraph their attack;
– have the enemy detect whether you’re going to attack them and occasionally try to defend against one of your attacks;
– Have their defense fail if it didn’t match up with the type of attack you used, and successfully block (and sometimes counter) if it succeeded.
The enemy needs to telegraph their own attack beforehand so you get an opportunity to dodge/block it. This removes the randomness and turns it more into a fighting game.
As a bonus: wow, I have never seen such outdated HTML in 2014! I fixed it up and edited the style to improve the readability and usability a bit. (Hope you don’t mind!) The HTML file is attached.
- This reply was modified 10 years, 2 months ago by DaVince.
- This reply was modified 10 years, 2 months ago by DaVince.
- This reply was modified 10 years, 2 months ago by DaVince.
- This reply was modified 10 years, 2 months ago by DaVince.
Attachments:
Thanks for all the feedback! You gave me quite a list of stuff to change! For the AI, I don’t know how to program any type of AI, so I’ve been really struggling trying to come up with anything. I know I should have a way of blocking moves, I haven’t gotten that far yet. This will take quite a while to change all this stuff. What I did do so far was add a black outline to the “you won” and “you lost” text. As for pressing left and right when choosing a character, I feel that the “Select” button is often times neglected, so I decided it should get a time to be in the spotlight, so I tried to use it as much as possible. But yeah, you’re right, pressing left and right makes more sense at the fighter selection screen. I don’t know if I can change it though, but I’ll try to. And thanks for the updated HTML. You made it look a lot nicer. As you probably guessed, I’m no expert at it.
I made a few other changes to the code. I made it so left and right goes through the fighter select screen and not select.
– Your attack only works when you’re near the enemy. Pressing the attack button should just always initiate the attack, whether you’re close to an enemy or not.
I changed the punch button so this is true, but I can’t change it for the special move since the fighters need to be close to each other (i.e. Giant can’t pick up any one from all the way across the screen.)
Thanks for all the feedback! You gave me quite a list of stuff to change!
Glad to help! Don’t forget though, this is just feedback and suggestions. It’s up to you to decide what you really end up doing. π
I changed the punch button so this is true, but I can’t change it for the special move since the fighters need to be close to each other (i.e. Giant can’t pick up any one from all the way across the screen.)
That’s good. The player will still need to be able to know the special move button does anything at all; playing a tiny little blip or very brief (non-blocking) animation frame when you press it would be good, I think.
For the AI, I don’t know how to program any type of AI, so I’ve been really struggling trying to come up with anything.
Hmm, I suppose for the AI’s most basic actions, you could have a counter that counts up every frame, and when it reaches a certain (randomized) number it’ll reset to 0 and try to attempt one out of several randomized actions (attacking, going into a defensive state, doing nothing…).
Then do the same for a set of movement actions. It’d be good to “weigh” the different types of actions depending on your enemy’s stats (so if their “aggressive” stat is higher, they will decide to move closer and try to attack more often, and if it’s lower it means they do more defensive/dodging things).