Oh, no more evil 640x480 screen size. Lets allow resolution switching. I'd like it to fill my 1028x768 monitor rez
------------------
--
"Do or do not. There is no try."
-Yoda
Oh, no more evil 640x480 screen size. Lets allow resolution switching. I'd like it to fill my 1028x768 monitor rez
------------------
--
"Do or do not. There is no try."
-Yoda
Thanks for the replies everyone.
OK. First Up.
What's a float or real? Why shouldn't I use integers?
And again, what's a keyboard map? I use the keydown event as it handles everything, including checking to see if the key is still down.
Starfield is on the way. I'm wondering if I should draw them through a random function or just make one in GraphicConverter and use it as a background.
In the game's open method, it does load all the pictures but not sounds(don't ask me why). This might be what's slowing it down.
What would split screen scrolling do? There is only one opponent remember. Where would you go?
Yeah. I know about the dead player thing. I just can't get my initialize working properly.
The screen size issue is a Real problem. That's right, I'm making a pun. RealBasic does not allow editing such things as screensize or spritesurface size at runtime. I made the spritesurface size 640x480 becuase some people might not be able to make their res any higher than that. Any ideas?
And the legal issues. I have on numerous occasions tried to get in contact with Ambrosia about this topic but I've found them to be a little unfriendly. But I won't hold that against them as they are a fairly large-ish software company and might not have the resources or time to deal with many people. And that's fine. If they don't like me using their graphics then all they have to do is ask me to get rid of them.
Thanks everyone for the comments and kberg for the tips. I hope your game going great.
Tycho
------------------
Quote
Originally posted by Tycho:
**Thanks for the replies everyone.
The screen size issue is a Real problem. That's right, I'm making a pun. RealBasic does not allow editing such things as screensize or spritesurface size at runtime. I made the spritesurface size 640x480 becuase some people might not be able to make their res any higher than that. Any ideas?
**
no good ideas. but.. you might just make about 3 versions(640x480,800x600,1028x768).
Make it so there are velocities. what i mean is don't make it so the helians reach a ballistic speed almost as soon as you hit the thrust. definetly make a reverse(like in EV), faster reload for weapons(like the stock helian in EV), shield/armor status.
that all i can think of right now. so hope you finish soon.
------------------
[ J_Ace21@hotmail.com ](mailto: J_Ace21@hotmail.com "E-mail Link")
Make the ships slower, let it use 800 x 600 res, and having keys setable if a MUST.
------------------
ERA for EV:
www.geocities.com/rhysmctharin/erahome.html
really cool, although you need to make the controls settable, you need to have acelleration, the guns need to shoot faster, and you need the autopilot key (it just swivels you tward the opininant, is it really that hard to do?) you also need to have a secondary weapon button and maybe a secondary select, i suppose you could make it so you could only have 1 secondary weapon, but that might be harder than squeezing in an extra key
------------------
oh, i think the networking idea is good, also using the EVO data files would be cool. and, using existing pilot files would be SOOOO COOOL!!! and if it were networked!
------------------
Quote
Originally posted by Tycho:
**OK. First Up.
What's a float or real? Why shouldn't I use integers?
**
A real number is the mathematical term. It means any possible number in the set (-infinity <= x <= infinity). This includes pretty much every number except for complex numbers (a + bi | i = sqrt(-1)). Floating point is the computer term (used in c/c++ because of it's close relation to hardware rather then the more abstract interfaces of Pascal or Basic) and consists of a sign bit, 7 bit exponent, and a 24 bit mantissa in that order if I remember the IEEE standard correctly. It's a format that allows numbers with decimal components, or numbers with very large exponents, ect.
If you used floats, your ship wouldn't have to move every frame just to have a velocity (though there ARE ways of simulating this with integers, but it involves keeping track of error terms). Try loading up EV and trying to bring your ship to a stop... You'll probably notice that you still move a pixel or so every few seconds. This is possible to do using floats. It would make life much easier for you to utilise proper acceleration as well.
Quote
**
And again, what's a keyboard map? I use the keydown event as it handles everything, including checking to see if the key is still down.
**
Your key functions seemed quite sluggish, though it was pretty hard to tell considering the way the acceleration works right now. If keydowns work after you fix the other problems, then continue to use them.
Quote
**
In the game's open method, it does load all the pictures but not sounds(don't ask me why). This might be what's slowing it down.
**
When I run your game, the very first time I make a full rotation of a ship it is dramatically slower then any consecutive rotation. I REALLY doubt that this is the result of cache misses... I'm pretty certain that right now, each sprite frame isn't actually loaded into memory until it's really needed... Efficient, but not exactly desirable in a game.
Quote
**
What would split screen scrolling do? There is only one opponent remember. Where would you go?
**
Bigger area to fight in... Having two helian sized ships in a 640x480 area is more then a little cramped. It would also look more professional...
Quote
**
The screen size issue is a Real problem. That's right, I'm making a pun. RealBasic does not allow editing such things as screensize or spritesurface size at runtime. I made the spritesurface size 640x480 becuase some people might not be able to make their res any higher than that. Any ideas?
**
Hmm... I don't have any experience with RealBasic, in fact I stopped using Basic after the AppleII BUT, maybe you could try something like this??
Make a virtual sprite surface sized 1024x768 or some such... Create a rectangle the size of your screen, centered in the spriteworld. Then use a wrap effect like you have right now, if the Sprites Rect goes outside any of the boundaries sides (so it is no longer visible), set the sprites position to the other side of the boudary rect. This way you wouldn't have ships jumping around on screen either...
Finally, aiming and reverse algorithms are a bit complicated. They involve an angle calculation and four different cases to find the shortest direction to turn. Fortunately, the two functions are almost identical... once you get one, you can generate the other.
Sorry for the long posts, hope they help...
Forgot one last thing... Use a dynamic data structure for the weapons. Sure there is a performance penalty for retrieving addresses, but with multiple weapons on the screen it only makes sense that you can have at best linear algorithms anyways. And if pointer variables aren't supported yet in RealBasic, use an array (though that puts a limit on the number of shots you can fire at the same time...)
------------------
(This message has been edited by kberg (edited 06-05-2000).)
First things. What machines are you guys running this on? g4's? Most of the comments such as speed and acceleration orientated ones are most likely caused by me testing this on a PowerMac 6200/75.(ie. read slow.)
Realbasic handles things very strangely with movement. You can only move whole x or y values. At the moment the Helian accelerates at 1 pixel per frame until it reaches a total speed of 9 pixels per frame. On my 6200 this is just right. If I put the framespeed down on the spritesurface the thing runs like quake 3 on my 6200.
I will eventually fix the firing rate and also incorporate secondary weapons. But that will be after I introduce a credit system. What's the point of firing secondary weapons if you can't buy them?
Just quickly thinking about autopilot. It will be impossible. My brain hurts!
ANd I will now binhex them. Why can't you open them?
Now for kberg.
Whoa, whoa. Slow down egghead.
OK. I absolutely do not get the floats stuff. At the moment as you can probably guess, my acceleeration routine is basically:
If your facing this direction then
add or subtract 1 from y variable
add or subtract 1 from x variable
add or subtract y from sprites y
add or subtract x from sprites x
Pretty simple stuff. But also quite complex. The reason it gets a bit jerky when you try to move in the opposite direction is that it might need to change the y variable by 17 but the x variable only by 1.
ie current acceleration is y=8, x=1
but you want to get to y=-9, x=0
so the next frame will be y=7, x=0
but the next is y=6, x=0
so the ship does a funny move left thing at the start and then goes straight down. That's why I wanted the formula for the real EVO acceleration. But of course Realbasic doesn't accept decimal x,y changes so the ship stays stationary.
Any ideas?
That's really funny about the sprite picts not being loaded. It works fine for me. It works fine on my brother's G4. I have absolutely no idea whats going on there.
I'll try the split screen thing.
Great idea about the screen sizes. Just so happens I had it implemented already. I just didn't bother to make the spritesurface size bigger.
I'll mess around with the reverse bit but it will be extremely difficult as the speeds change with acceleration so I can't just say look opposite direction of where you last pressed thrust key.
Arrays. Arrays. Arrays. Will do. At the moment I have ship1 sprite, ship2 sprite, fire sprite, explosion sprite. But I think I'll just make them Sprite(999) which means an array of 999 sprites. But I'll probably need a type variable to keep track of what is what.
eg. sprite(1) = ship1
sprite(15) = needle missile
I think I covered everything. And thanks for the long reply. Keep 'em coming.
Tycho
------------------
Here is the explicit code you need:
SpeedIncrease = sqrt((2 * Acceleration) / Mass);
xSpeed = xSpeed + (SpeedIncrease * cos(angle your ship is facing));
ySpeed = ySpeed + (SpeedIncrease * sin(angle your ship is facing));
You kinda really need decimal numbers. I recall that Basic DOES have support for Real numbers... I don't remember how to declare them though. If RealBasic provides nothing in the way of real numbers, then switch languages because you won't get too far. I think there are other people on this board who program using Basic. Ask them for help involving real numbers.
------------------
Quote
Originally posted by Tycho:
**ANd I will now binhex them. Why can't you open them?
Tycho
**
Thank you! This will help others besides me, too!
------------------
"I don't get involved in politics. My IQ is too high."
-VootGoo, your standard issue Dwarven Fighter I played when I was 12.
p.s. His INT was 6.
For some reason my first post didn't make it to the ether so I'll quickly say it again.
First up. Next Build will have:
Faster firing rate
Secondary Weapons
Settable Keys
Starfield
maybe split screens
support for all monitor resolutions
Happy? Good. That'll be out maybe by the weekend.
Hey kberg.
Again I have no idea what a float is. I'm guessing you do something computer/programming related at school/work?
Let me just fill you in on something. I'm studying architecture. Doesn't that just say it all.
From your description I interpret a float as something that holds more than just a number. Correct? ie. speed and direction?
I, as you've probably guessed just add x and y values to my sprites x and y values to simulate movement. At the moment the helian moves at 1 pixel per frame until it reaches a maximum velocity of 9. Any more is too fast and 1 pixel is the smallest amount a sprite can move. It can't go 0.5. I realize the movement is a little bit jerky when trying to go in the opposite direction but that's because it jumps a whole pixel to straighten itslef.
I have absolutely no idea why your version does not load all the pictures into memory. It works fine on my 6200/75(feel the power) and on my brother's G4.
Turns out I already had the larger screen support already implemented. I just forgot to make the spritesurface larger.
I'll take a look into reverse but I think it will be almost impossible for me to wrap my brain around. I'd have to use the ship's current velocity to determine which way it's going and then make it turn the opposite direction. Correct? If it is, I give up.
Arrays. Arrays. Arrays. Will do. Actually it's already done. Everything now is the one type. ie. a "Sprite". I've made an array of Sprite(999). Which means everything will obey the same laws as everything else.
I'm gonna binhex as well. But I must know why you can't get plain .sit's?
Tycho
------------------
Well that's where the problem lies. RealBasic won't allow sprites to move a fraction of a pixel. Only whole amounts.
Hang on. I might be wrong. Maybe integers can only hold whole numbers. Is that what everyone's ben trying to tell me? Now I'm confused.
I'll look into the real. It makes sense.
------------------
Where your sprite will only move whole pixel values on screen, the sprites position as kept track of by your program can move fractional distances...
There is a difference. Your sprites position on screen should be the closest approximation to the sprites actual position. So if your sprite was at position (20.34, 50.8) then it would be drawn onscreen at (20, 51). This is why a sprite in EV can move 1 pixel every 10-20 frames without any change in velocity.
If you're in architecture maybe the following will make sense. I don't know if terminology is different over there in Australia or something...
Integer = ..., -3, -2, -1, (0), 1, 2, 3, 4, 5 .....
The presence of 0 in the set of integers is debatable. In computer terms, yes 0 is an integer. In mathematical terms 0 is usually not in the set of integers, but it is in the set of natural numbers.
Anyways, for a number to be an integer it MUST come from the above sequence. 5.1, for example, is not an integer. Neither is 2/3.
Real numbers = anything between (-1) * infinity and infinity. So the set of integers is included in real numbers AND all other numbers like 5.1 and 2/3 as well.
Something that holds both speed and direction, or any other set of data is called a vector, not a float. A float is the computer term for a real number, and comes from the method computers use to define real numbers in hardware.
------------------
Ahh, I get it. So even then the acceleration my be 0.5 per frame, on screen it will apear to be 1 per 2 frames.
That just might work.
Unguided, Unlimited, needle missiles will be in the version released this weekend. There will be a short time in between firing. I'm not sure if I said before but it now has rapid fire. The lasers come out so quick!
I can't really remember how the lasers actually work in EVO. Do they come out in a straight line or was it random?
Tycho
------------------
Quote
Originally posted by Tycho:
**Ahh, I get it. So even then the acceleration my be 0.5 per frame, on screen it will apear to be 1 per 2 frames.
That just might work.
Unguided, Unlimited, needle missiles will be in the version released this weekend. There will be a short time in between firing. I'm not sure if I said before but it now has rapid fire. The lasers come out so quick!
I can't really remember how the lasers actually work in EVO. Do they come out in a straight line or was it random?
Tycho
**
Depends on the type of cannon. the Blaze cannon(that is on the helian) has an inaccuracy of 2 which means it is randomly fired anywhere 2degrees to the front. what i means is they are random.
------------------
[ J_Ace21@hotmail.com ](mailto: J_Ace21@hotmail.com "E-mail Link")
Alright, new version released.
Helian Wars a8 now has rapid laser fire, delayed, unguided needle missiles and a starfield!
Also the acceleration is revised. It's a little smoother but it still need work. Werd out to kberg for that one.
so go get it at
(url="http://"http://uq.net.au/~zzlukirk/")http://uq.net.au/~zzlukirk/(/url)
What else do you want?
Do you want the ability to get credits for destroying your opponent so that you can buy better ships and outfits? Do you want it networkable? Do ou want a windows version? That's all just a matter of turning on "windows build" when I make it. No codeing necessary.
Tycho
------------------
sorry. but i have a VERY strange ISP. I can't download certain files from certain servers outside of Korea. so would you mind email ing HelianWars?
PS this is to Tycho. I don't wan't to have to download something like 5megs on this 56k modem because too many people sent it to me.....
Thanks.
------------------
(url="http://"mailto:JAce21@chollian.net")mailto:JAce21@chollian.net(/url)JAce21@chollian.net