Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: ACagliano on July 24, 2010, 11:47:58 am
-
The game is currently undergoing design. I have had no issues with commands, save one, thus far. As of right now, the program successfully checks for its appvar, and if not present, allows you to create a ship. You can choose between 3 different types of ships, one with higher weapon power but weaker shields and slow repair, a second with weaker weapons, but higher shields and slow repair, and another with very strong shields and quick repair. Currently working on assigning all systems a position in the ship (aka: front, back, top, bottom). Also working on a points system. You earn points for defeating opponents, which can be used to upgrade the ship, purchase more weapons, or even to attain the Romulan torpedo from the 2009 movie (deals 40-60 dmg to shields, or if shields are down deals 20-50 dmg to all systems in the area hit). It will be very expensive, though.
I need some advise on a shield defense system, though. What would you think is better:
1. Standard: Shields, while active, always take 100% of the damage.
2. Complex: this is how it works
once the ship is hit, the Z value is set to 1. Every time the program loops, the Z value goes up one, until it hits 4. If your ship is hit while Z=1, the ship takes 75% of the damage, shields are affected normally. If Z=2, ship takes 50%, and if Z=3, ship takes 25%. Once Z=4, shields defend completely. The idea behind this is that once shields are hit, they become strained and unstable. Thus another attack hitting within quick succession would penetrate to some degree.
Let me know which is preferred.
-
I vote the first method. Whatever the case, I like how you're doing it in Axe. Thanks for resuming the project!
-
I actually like the second method better ;D Seems like it would be more strategic, and give less power to those with the shields, although you might have to fun some play tests so find out.
-
Since in Star Trek (Voyager being the worst offender, it seems...) the shields are always failing after about two hits, I like the second method better, since as Builderboy says it gives less power to the shields.
-
I definitely like the second method better. It seems much more balanced/realistic.
-
I vote the second method more too. I actually have another idea for the shields, though not sure how easy it would be to do. But basically instead of basically losing all power after one hit that it instead like slowly goes down and if it hits 1 it stays there for a few seconds then starts to slowly recharge. I think the idea sounds better in my head so I can retype later what I mean if you want.
But glad to hear this progressing :)
-
I see what your saying, and what you are saying is actually how it happens. Shields start at full power, then take hit after hit. With each hit, shield power decreases, until they fail at 0%. In the movies, it seems that, with the exception of the Romulan torpedo from the 2009 movie (which somehow damages the ship even with shields up) the shields absorb all damage as long as they are active. However, once shields fail, they do not recharge. Unless, of course, the ship's crew activates repair on the shields. This program will have repair functions. Also, there will be a key combo hidden in the program (that I will not release-try to find it yourself) that automatically forces your opponent to lower shields (they may raise them again as soon as they notice them down).
-
In some movies, such as Star Trek VI: The Undiscovered Country, the shields absorb MOST of the damage, but the ship still recieves damage occuring from shake-ups and occasional weapon energy that the shields didn't catch. Of course, when shields dropped entirely, the ship recieved full damage.
However, most games require shields to be fully down before damage is recieved. I will admit that this doesn't apply to a lot of Star Trek games, which use the above method.
-
Ah ok, to me it just sounded like that after one hit shields went from 4 to 1 and then would try to raise back up.
-
No. The best example is in undiscovered country. While shields were raised, the Enterprise was protected from most of the physical damage. All that the ship felt was just being rocked by the impact. As the shields continued taking hits, they weakened. Now a hit would be mostly deflected, but the immediate area of the strike zone on the ship would be damaged. Then, the shields collapsed. The next torpedo, instead of rebounding off the shields, punched an exploding hole through the ship's hull and flew out the other side.
-
Sorry for the double post, but this is a progress thread, and this is a progress report:
Second Progress Report
Ship Selection Complete, now that I was able to plug in the appropriate ketKey values. Just adding some extra variables for some extra features I am adding. Then need to locate and fix an Err: Duplicate. Then, it's on to the sprites and main battle loop. Wish me luck and minimal crashes.
-
I like the idea so far, as for shield, I would go with first option and maybe have the shield regenerate itself slowly over time, kinda like Starcraft units. It's up to you, though.
-
Ok. This will be my Axe Parser contest entry. As linking is relatively new, I will not chance it for the contest and will enter a single player version in the contest.
-
Ok. This will be my Axe Parser contest entry. As linking is relatively new, I will not chance it for the contest and will enter a single player version in the contest.
Cool! Can't wait for screenies! This will be such a great game!
-
I can't wait as well. Good luck on this entry!
-
Good luck on this. Sounds cool :)
-
Third Progress Report
I'm having a problem I cannot identify. The program is set to display ship options, then wait until you press a key using the following code:
0->G
While G=0
getKey->G
End
For some unknown reason, this is looping infinately. No matter what key I press. It shouldn't. Currently trying to resolve.
-
Third Progress Report
I'm having a problem I cannot identify. The program is set to display ship options, then wait until you press a key using the following code:
0->G
While G=0
getKey->G
End
For some unknown reason, this is looping infinately. No matter what key I press. It shouldn't. Currently trying to resolve.
Try replacing it with
Repeat getkey
End
-
Interrupts are probably disabled or you have a custom interrupt. You cannot use the OS's getkey routine unless the OS's interrupt is on. It's because the key detection has to run in the background.
-
Quigbo, I did do "FnOn" and forgot to use "LnReg", but I crashed several times since. Plus, a simple GETKEY program that checks for the number of the key pressed and throws it onto the screen works. It only seems to reloop inside MY GAME, just to slow me down (lol).
Edit: Just reset interrupts. Problem persists. I'll try the "Repeat" route tomorrow and post back.
Edit 2: Problem is still there with repeat. So I simply removed the faulty section (program will work fine without it) and resumed coding. I'll see if I can fix it once everything else is done.
-
Mhmm I hope you can figure out a solution. Good luck!
-
Currently working on coding in position update for the ship and the enemy ship, as well as the warp and impulse drive speeds.
Question 3: Does Axe Parser use order of operations yet?
-
Mhmm for question 1 and 2 I think it may be best to check the Axe sub-forum for existing topics so you can maybe find what you need, as otherwise, it may be too much help for the contest, rules-wise. For question 3, it should be fine, though, since you aren't asking direct code-help. From what I remember, it goes from first operation to last, still, though, like if you have 1+2*3+5, it will do 3*3+5, 9+5 then finally 14. It can be a bit weird at first but I somehow got used to it quite easily. It may depend of people though.
-
Progress Report
Making progress rapidly. I now have the phaser and photon firing systems mostly functional, as well as position update for both your and enemy ship. Also got the #CreateSaveFile and #OpenSaveFile routines working.
Now, on to the systems to calculate battle damage...
Question: If you are using a 2-byte number, lets say you have 50000 and you add 50000 to it. Does the value reach 2^16, and then cycle back to 0 or does the program crash? Similarly, what happens if a 2-byte variable equals 5 and I subtract 1000 from it? Does it loop up to (2^16)-995 or does it crash?
-
It cycles back through 0, giving a result of 50000+50000-2^16.
As for the second one, yes, it's 2^16-995
-
Awesome! Can you post any screenshots?
-
Not yet. One of my computers is out of usable memory, the other simply isn't working. I will once I have access to a computer that can do screen-capture and has TI-Connect.
-
Progress Report
Enemy damage system complete. Now on to the rest of your ship.
2 questions.
1. Let's say I have this, for instance:
1->A
If A
"HELLO"->Str1A
Text(23,20,Str1A)
Else
"GOODBYE"->Str1B
Text(23,20,Str1B)
End
Would Str1A and Str1B become available for use anywhere in the program, or do I need to redefine it outside the conditional?
2. I noticed a strange phenomenon:
"vStTkSav"->Str1
GetCalc(Str1)->P
that was version 0.3.3
when I upgraded to 0.4.3, then opened the source again, it read
"appvStTkSav"->Str1
GetCalc(Str1)->P
I didn't change the 'v' to an 'appv'. It did it by itself. Is it supposed to?
-
yes, the 'v' for appvars has been changed to 'appv'
As for Str1A and Str1B, variables/pointers are unscoped, so you can use them everywhere else in the program.
-
Also, another change since 0.3.3 is that if you don't need the pointer for the rest of the program you can define the variable at the same time as using it without needing a static pointer. For instance, your example could be:
1->A
If A
Text(23,20,"HELLO")
Else
Text(23,20,"GOODBYE")
End
You can do this anywhere in the code with any data type, even sprites:
Pt-On(8,10,[004299E7E7FFA542])
But since you aren't giving the data a name, that means you can't use it anywhere else in the code unless you create a duplicate or something like that.
-
Not yet. One of my computers is out of usable memory, the other simply isn't working. I will once I have access to a computer that can do screen-capture and has TI-Connect.
I'd be willing to post screenshots for you, that is if you're able to put a program up online. That may be the problem, and I'm probably just not getting the point 8)
-
If it's for a contest entry, you would have to ask either me, Builderboy or Quigibo for making a screenshot, since it is against the rules to distribute contest entries programs or entire source code. However, I cannot guarantee a screenshot from me would come out very fast, as I am slower on requests and checking topics lately.
-
Does Axe Version 0.4.3 support sending a 2-byte number with the Send( ccommand? If so, how do you specify it is such? Would it be, for instance, Send({L1+8}^r,1000)
^r means superscript r.
-
That might be best asking the question in the Axe sub-forum, since it might get missed here.