Post subject: Ninja Spirit
SXL
Joined: 2/7/2005
Posts: 571
ok, it's just a suggestion, as I have neither the guts, nor the time... nor the experience to do a TAS. Ninja Spirit is a very old (1988) arcade game, ported to Amiga, Atari St and finally TG16/PC Engine... to finish on the good old GB. it's a basic beat them up, there are very few moves available, except that the hero can do very big jumps, and collect many power ups. so, what's so interesting in there ? well, one of those power up allow the player to create a shadow clone of himself, following him from a distance, and copying everything he does with a delay. you can create up to 5 clones if my memory is good. example : you jump, slash, and continue running. the clones will do the same, exactly where you paseed, one after each other. they stop when you stop, are invincible. there are 2 game modes : arcade (instant death) and gb (hearts bar). first is more difficult, but second would allow taking damage, hence maybe faster. I'd really like to watch a movie of this game, not only because I suck at it and would want to see it finished, but mainly because I've always wondered how nice it would look if one could manipulate the clones, and make fancy things with them. it might be complicated though...
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I like this game. I was playing around unassisted, and I observed a few things: -You may only have up to two shadow clones. -Shadow clones stop moving exactly when you stop moving. This means that sometimes you can make them stop in mid-air. -Shadow clones attack exactly when you attack, even if they are stopped in mid-air. -Attacking while running causes you to stop. Attacking in mid-air does not. -Jumping multiple times does not seem to slow you down. -Some bosses are ridiculously hard to beat without taking damage. However, by using the 'bubble' weapon upgrade, and by carefully placing the shadow clones, it should be possible to attack them constantly without getting hit. Since the in general case, avoiding enemies, and even attacking enemies doesn't slow you down any, I would vote that if this game were to be done, it should be done in arcade mode.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I decided to give this game a shot. In a lot of ways, it's kind of like NES Batman, except that the default weapon is a sword instead of a fist. My Stage 1 WIP can be found here. The rom I'm using was Labeled Ninja Spirit (J).gb, although I'm not really sure if it actually is Japanese, because most everything is in english. A little bit about the game. The game has seven stages, each with a boss to defeat at the end. There are four weapons: Sword, Shuriken, Bomb, and Sickle-and-Chain. Each weapon can be powered up by having the weapon selected while grabing the power-up. If the weapon it already powered up, one of the other weapons will be powered up instead. Power-ups only drop from certain enemies (in stage one, they are the flashing enemies hanging from the walls). Moreover, where they appear and which power-up they drop seems to be hard-coded (think Mario Bros. question mark bricks, in enemy form). Another power-up is a shadow ninja, which follows your path exactly and does the same moves you do. There is another powerup which destroys all enemies on the screen for about three seconds. The first part of the stage is pretty straight forward. I make sure to power-up both my Sword and my Shurikens, and to get the shadow ninja. At the end of the stage, there are enemies jumping out of well-like structures. You don't even have to kill any, just wait for a certain amount to appear. However, the game only allows 3 to be on the screen at a time. By killing at least one before a fourth wants to appear, you can make it progress a lot faster (about 300 frames faster than not killing any at all). As for the boss battle, I realize the method I'm using is rather boring, but I guarantee that it is the fastest possible. The only part of the statue that is vulnerable is the head region. I'm actually not even doing any damage, only my shadow is. Every frame the the statue is white, it is taking damage. Were I to jump, or move at all, my shadow would move down to where I am, and would stop dealing damage. Important to note, is that this is the only boss battle like this (no other bosses are stationary). I'd like to get some feedback as to whether this game is interesting enough to continue TASing. Since it's only seven stages long, I can't imagine the final movie running much over 15 minutes.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
I just watched, and I was entertained. Though, I wonder if you could play more with the shadow, for instance manipulating your character to make the shadow(s) kill as many enemies as possible, or even every of them, as a side (or main ?), more "impressive", objective. anyway, it's a nice work, even for just a test run, and I enjoyed it. I'm not disturbed by the boss strategy, as it's short, but I admit it's not very exciting and I fear it could be a problem for some watchers/voters, hence your movie.
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I actually redid this stage this afternoon. I found that the pre-boss sequence wasn't optimal (I wasn't killing some of them quickly enough, and causing a delay). So I used a new strategy, which is using a powered up Sickle. I saved 87 frames from this alone, and it's quite a bit more entertaining to watch. I also saved 44 frames from the boss itself, from better placement of the shadow. The second test run, 131 frames faster than the last. I've tried to utilize the shadow as much as possible. If you go frame by frame through the section where I get the shuriken power-up, there's not a missed shot, either by me or my shadow. The new pre-boss section utilizes the shadow a lot more than the last one did as well. EDIT: The above WIP now has progress through stage 2.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
Ouch, randomness. I'm currently trying to manipulate the explosions after the second boss. That's right, the "you just killed the boss" animation. There are a certain number of explosions that go off before the next level starts. It seems, however, that the intervals between them are completely random. It's so extreme, that doing something as simple as moving one pixel to the right before the explosions start can cause a variance of 100 frames or more. I'll need to do some experimentation to see if there is a theoretical minimum time use, and how to manipulate them. Fortunately, the first stage doesn't suffer from this, as it seems to be timed with the descent of the statue, and not just the explosions.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
nice work so far. just one question : would it be possible to hit the first boss with both the player and its shadow ? would it be quicker that by the shadow only ? also, on a general matter, could you use the shadows more extensively ? ;)
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
SXL wrote:
just one question : would it be possible to hit the first boss with both the player and its shadow ? would it be quicker that by the shadow only ?
Now that I think about it, if I were to jump just before the boss becomes vulnerable, I should be able to hit him a few times with the main character as well as the shadow. But afterwards, I don't think it's possible. As soon as I move, the shadow comes down to where I am, and stops dealing damage. Were I to continuously jump, I might be able to get a few hits in with both the shadow and the character, but I'm not sure it would outweigh the time when no damage was being dealt. Another big consideration is lag. The boss regularly shoots little fireballs at you, which can be destroyed with the sword. I currently have the shadow and the character placed to destroy these as soon as possible, which minimizes lag.
SXL wrote:
also, on a general matter, could you use the shadows more extensively ? ;)
I really am trying, as much as possible. In Stage 1, I think I did a fairly good job. Stage 2, on the other hand, doesn't have much action at all. I tried to spice it up by jumping ridiculously high off the branches, but there just isn't a whole lot that can be done. The boss battle is rather quick though, mainly due to having 2 shadows.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
any update primo ? hope to hear from you soon, even just posting an updated wip would be nice :)
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I haven't had a lot of time as of late. I'm currently redoing the first boss battle though. I expect to save a few hundred frames or so. I'll post an update once I've finished :)
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
After a lot of experimentation with the first boss battle, I think I've determined the optimal strategy, which involves jumping and attacking with both the main character and the shadow. My main concern was minimizing 'dead time' (i.e. time when the boss isn't being damaged). For a while I thought the minimum was 13 frames, but I found that by moving slightly left and right, I could bring it down to 12. I defeat the boss in just four passes, saving 350 frames over my last strategy. I hadn't expected to save so much time actually, but it seems that the main character does more damage than the shadows, which makes sense I suppose. The new WIP; not only faster, but quite a bit more entertaining as well.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
glad to hear from you again primo ; it seems it's a two man topic, nevertheless I believe this will be a good submission once it's done. the new wip looks much more better, the waiting (boring) has been reduced to its minimum, and the new boss strategy is very impressive. two thumbs up ! keep up the good work :)
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
Stage two is completed. Even though I kill the boss in two less hits than my test run, it doesn't save any time at all. The boss alternates between doing three charge passes, and then crawling on the wall. I kill him just after he starts his second pass, but he doesn't die until after finishing that pass. I don't think it's possible to kill him in just one pass, so this is likely optimal. Now I get to play around with manipulating the explosions again... which should be fun. The new WIP, in the same place as usual.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
I like the way the run is going to, primo. my only worry is that my opinion might not be shared if your work would (will) be submitted, so I'd gladly hear other opinions. I could not tell if it wasn't optimized enough (I could just suggest fancy things, such as killing as many enemies as possible, only with the clones for instance). for those hesitating to watch : this game has a lot of potential, it's a classic platformer, except the character has some special abilities, the shadow clones being the most interesting one. try it :)
I never sleep, 'cause sleep is the cousin of death - NAS
Joined: 8/1/2006
Posts: 428
IMO, any game with Shadow Clones gets +5 points. 15 more bonus points since you can manipulate the shadows into doing completely different things; the more diffeerent the better.
Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused telnet: Unable to connect to remote host
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
The game is rather fast paced. A lot of times enemies just go 'poof', and it's hard to tell how they died, although I am using the shadows quite a bit. Enemies appear at random intervals. Were someone to do a real-time speed run, stopping now and then, the screen would fill up with enemies rather quickly. However, bolting through each stage as I'm doing, not many spawn. In stage 2, I actually manipulated more enemies to appear, although it may not seem like it. I also play around with death a little bit, coming uncomfortably close to some enemies only to kill them effortlessly afterwards. But once again, this happens so fast that it's hard to see what's actually going on. In stage 3, I plan to showcase the shurikens, as I haven't really used them all that much.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I've finished manipulating the explosions for stage 2. I was able to find the memory location for the explosion timer, which is D6F2. It seems to always be a random value belonging to the set [3, 7, 11, 15, 19, 23, 27, 31], which means an average value of 17 frames. There are 30 explosion, so by manipulating a 3 value for everyone, one can save an average of 420 frames. I actually saved 460 frames over doing nothing. Manipulation was actually a lot easier than I thought it would be. During the 3 frames of the previous explosion, I simply tested various combinations of the arrow keys. Out of the 256 combinations, hitting a one in eight chance is not hard at all. The result looks like a bad attempt at dancing, but for 420 frames I don't think anyone can complain. Current WIP. Enjoy :) EDIT: Above link is now completed through stage 3.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
great work as always. stages seem so short, are there still a lot left ? total rampage !
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
SXL wrote:
great work as always. stages seem so short, are there still a lot left ?
Only four more actually. Stage 4 is a little bit longer than most, but Stage 5 is just a vertical ascent (or was it Stage 6?). With precision jumping it should take about ten seconds to reach the boss. I think I over-estimated the length of the run as well. At the rate things are going, this run will be easily under ten minutes (more like seven to eight).
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
I figured I'd post an update. As I said, stage 4 is a little longer than most, but I think it turned out pretty nicely. Since it's an enclosed room with enemies on both the floor and ceiling, I chose to use the Sickle and Chain, which I think was the right choice. The boss battle is kind of weird... it's two boxes which try to crush you. In order for it to die, you need to do lethal damage to both boxes; because they start so far apart, I basically do them one at a time. Stage 5, as mentioned, is just a vertical ascent. I think I've found the best route. The boss battle in the movie is not frame perfect, and will be redone. I figured y'all might appreciate an update though :) EDIT: Oh yes, the WIP is in the same place as usual.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))
SXL
Joined: 2/7/2005
Posts: 571
glad to hear from you again, primo. I don't have much to say, except that I like it. I guess a side objective such as "hit enemies only with clones" wouldn't be that much faster anyway, since the game is rather straight-forward, but it still looks fancy the way it is. I'd still want to hear other opinions though. Maybe they will come once this gets finished and submitted, I hope.
I never sleep, 'cause sleep is the cousin of death - NAS
Player (88)
Joined: 1/15/2006
Posts: 333
Location: Bangkok, Thailand
Run completed and submitted.
print reduce(lambda x,p:p/2*x/p+2*10**1000,range(6643,1,-2))