Showing posts with label apple assault. Show all posts
Showing posts with label apple assault. Show all posts

Wednesday, July 22, 2026

Apple Assault Advance ?

 Ah, yeah. Early this month, while the heatwave had not burnt our energy and house wasn't yet a post-camp-departure-mess, I had that Silly Idea (tm) that I could enter the

I would have read https://gbadev.net/resources.html#articles, installed the GBA devkit in addition to the NDS devkitpro (reality: done, but where) and I'd have quickly (ahem) converted the Green Zone graphics into 16-colors-per-tile so that they could fit in the smaller video memory of the GBA. Some sprites (funky funghi, Bilou) would have been turned into 16-colors too while some others (appleman, mostly) would have stuck to 256 colors because they're taking more than 16 :P

Only then, I'd have tried to rebuild the Dreams engine for GBA and imported the Dreams animation over the Apple Assault levels, and that would have been the basis for Apple Assault Advance. Luckily enough, the sound engine promoted by devkitpro would have been happy about my brother's good old 6-track variant of String Tracking.

Likely, I'd have needed to find a way to compile the GobScript state machines into plain old data that could stay in ROM so that the smaller-sized (256K?) GBA RAM could have been saved for really-read/write features. Same for the maps, most likely ... They're not that big, so they could have been fit to RAM. Maybe they would have to so that collectible tiles would have worked. (not that there are many such things in Apple Assault).

But that was before blogpress started pressing me to develop it again. I think I'll focus on making first steps with bosses in NDS Dreams engine, instead :P 

Sunday, June 18, 2017

runme + assault = todo

I'd love to have the time to provide a real tutorial for people to start working with libgeds. So far, the best I have is a package with 8-bitifed graphics for AppleAssault and the corresponding game/character scripts... which -- thanks to some work I did a few weeks ago -- now also comes with a copy of RunMe that can run all of that. Maybe that will at some point make it more interesting to start working with the Game Engine for DS.

Of course, because runME is a tool primarily designed to transfer files, it will not exactly be easy to start a game there.


Bon, j'avoue, j'adorerais avoir le temps de travailler sur un vrai tutoriel pour le système lib geds, mais jusqu'ici, la seule chose qui s'en rapproche un petit peu, c'est une sorte de kit avec les graphismes de Apple Assault en version 8-bit et les script correspondant pour les personnages et pour le jeu. Et grâce au travail de ces dernières semaines,  tout ça i tourne maintenant avec une version récente de runme. youpi. Peut-être que ça rendra les choses plus faciles pour ceux qui veulent commencer à travailler avec le game engine for ds on peut toujours rêver...




click 'offline', then 'cmd'click 'A' to pick one of ASSAULT*.CMD, and then click the name you want to runpress now L+A to load the script into the memoryand now press L+Y to process that script to the end.

Évidemment, le programme 'runMe' est avant tout un outil de téléchargement. Donc il faut un peu chipoter pour pouvoir démarrer son programme:  passer la détection réseau , par exemple, puis choisir le fichier qu'on veut démarrer, et des commandes un peu barbare du genre La+À ou L+y pour démarrer la lecture du script ou pour l'interpréter sur la DS.

When I want to run this, I do it with desmume-cli, using --cflash-path=AA-efsroot (which is in the 'runMe.zip' archive) and --load-type=1. But that only works in Linux. For windows user, you'll have to go into config->slot2 and setup the directory manually (I just hope for Windows users that they can somehow save that configuration)
Il faudra aussi s'assurer que l'émulateur a accès au fichier du jeu qu'on veut essayer. Moi, je fais ça à la ligne de commande dans Linux, mais évidemment, les gens qui travaillent sous Windows devront passer par les menus de configuration de desmume pour avoir la même fonctionnalité ( voir l'image).

Voilà, avec tout ça vous avez la possibilité de tester le jeu que vous avez vous êtes en train de développer, mais malheureusement, s'il y a des erreurs dans le script, c'est encore très laborieux de les trouver et de les corriger. On peut faire mieux avec l'outil de test automatique que j'ai développé pour mettre School rush au point, mais c'est un truc qui doit être compilé à part. Et pour l'instant, il faut même le compiler à chaque fois qu'on veut essayer de traiter de nouveaux script pour un nouveau jeu, donc il faudrait que je fasse appel à l'équipe pour avoir une variante qui tourne sous Windows histoire que les jeunes puissent essayer de faire le même. Mais voilà, l'équipe, pour l'instant c'est juste bibi. alors soit vous vous enrolez, soit de vous patientez. Ciao.

All this makes you able to try the game you're developing, but when there are errors in the script, you just have a stop with the content of the offending line dumped.
Hopefully, It can now also be checked with 'testme', the unit-testing tool for current School Rush game. (which unfortunately still requires a rebuild for Windows everytime you change the scripts you want to check).

I could really use a helping hand to get that going somewhere. Someone who's used to do builds of Linux native projects in a Windows environment. Even then, it's unclear whether I can compete with a tool such as DSGameMaker, but I still think people should have the choice ^_^


Oh, et si vous allez jusque là, la présence du "log" deviendra vite gênante dès le niveau chargé avec succès. Rassurez-vous: il est tout à fait possible de le faire disparaître: il suffit pour ça de toucher le bouton 'log' sur l'écran du bas. Et si vous voulez retourner charger un autre niveau, le bouton "beam out" vous ramènera sur l'écran avec la liste de fichier et le "clavier virtuel" (qui fait les "lettres paires" quand on garde L enfoncé, soit dit en passant).

Et pendant que vous lisiez tout ça, j'ai ajusté la position des vagues d'encre pour le "niveau retour" de School Rush...

Friday, October 05, 2012

One Last Apple Assault.

Well, granted, 2 years after its initial release, there's not much more novelty I can bring to Apple Assault. I got feedback from Pierrick and his son about the latest modifications, just took the time to bring the last polish, and here's Apple Assault v1.6. At last. In appearance, not much changes since 1.5, but it's quite a strong difference in terms of rhythm and gameplay, imho. 

Voici la version 1.6b d'Apple Assault, enfin finalisée, avec juste quelques micro-règlages par rapport à la 1.6a sera mon dernier mot. 4 mois pour passer de la pré-release à la release définitive ... je vieillis, moi.

Wednesday, June 27, 2012

pitchenette

I managed to animate the ink in the school zone, target reached. AnimEditor should now be fixed and will be able to manipulate .spr files without dropping information, although I still need to track some memory-related bug.
So why not have a break and try that counter-stuff to better manage the number of applemen on screen.


au menu:
- on garde les berry bat;
- on revient à l'ancien comportement des pommes (merci SVN ;)
- seule la moitié des pommes entre direct dans l'arène;
- mode "pitchenette" pour repousser les pommes quand on a plus de punch-power;
- j'utilise (enfin?) les graphismes revisités l'an dernier.

Plus qu'à vérifier que ça donne effectivement un gameplay intéressant, corriger les éventuels "bugs de maps" et comprendre pourquoi j'ai parfois plus de pommes au total que prévu compris et corrigé: en augmentant le "nombre de pommes autorisé à l'écran" chaque fois qu'une pomme est morte, et en utilisant uniquement ce nombre (indépendamment du nombre, c7 de pommes restant à générer, c5), je pouvais autoriser la création de trop de pommes en fin de partie si le joueur fait un "combo" avant que les "générateurs" n'aient le temps de réagir.

I've sent beta-testing ROM to some friends, to see whether that's worth a world-wide release or not. It seemed the right time to integrate the new graphics for the green zone, revise maps and to give a new idea a try: the pitchenette ...

Now when you hit (B) when standing, you'll do something, whatever your punch level might be. When you don't have any power left, Bilou simply push a "stop hand", that is merely capable of repelling the applemen. It doesn't have any effect on stunned applemen nor on woodworms, though.

Monday, June 25, 2012

Piek's counter

Rencontre-surprise avec Piek, concepteur initial de ce qui a fini par devenir le Bilou que vous connaissez. Et double-combo-bonus: il venait juste de tester de manière plus approfondie Apple Assault (avec contre-expertise de son gamin que je situerais pas loin des 10 ans).

J'ai pensé à quelque chose qui pourrait discipliner un peu parfois un certain chaos... Je m'explique...

L'introduction dans ton code d'une simple variable qui en fait varierai selon la difficulté... Le nombre de pommes maximales en jeu en même temps...

D'une toute petite variable ajoutée, voici les avantages que tu pourrais en retirer...
  • Cela permettrait que l'on évite de se planquer dans un coin sûr de la map et les attendre. On serait alors obligé d'aller chercher les pommes au contact et de sortir de sa zone de confort...
  • Cela permettrait également d'éviter qu'elles ne sortent toutes à la fois de façon continue et de fait, d'éviter que l'on se retrouve avec 50 pommes groupées en bas de la map où il est très difficile de les battre...
  • Cela t'apporterais un "curseur" de difficulté supplémentaire qui te permettrai de réutiliser tes maps mais en augmentant de fait leurs niveau de difficulté... (il est plus facile de se battre contre 5 pommes en même temps que 10 sur la même map)


An old-time fellow pops up while I'm on a walk ... Piek, inventor of the school zone, and initiator of Bilou's early look. He just gave Apple Assault a try with his 10-year-old boy and was eager to report his proposal: an on-screen appleman counter, separated from the 'to-be-defeated' counter. He's got coding background as well, so he came with a code proposal rather than a mere fuzzy feeling, but most importantly, he's a much better retro-gamer than I am, and supported his proposal with a quite complete set of weaknesses in gameplay that his proposal would (likely) fix.

I'll thus likely come back with an Apple Assault 'piek' 1.6 integrating that new counter with other revisions, such as "punch-button-always-has-an-effect-on-baddies", even if the effect is weak, and insufficient to beat them.


La plupart de ces soucis, je les avais déjà identifiés, mais pas vraiment traité avec succès. Mon meilleur coup reste BerryBat qui vient "punir" le joueur qui campe sans affronter les pommes. Mieux doser la quantité de pommes présentes sur la carte ne ferait pas de mal non plus, mais là, toutes mes tentatives ont été des échecs complets. Mais je persévère: ça ne devrait pas me coûter trop cher de faire le test.

Mon inquiétude se situe plutôt sur la manière de "doser" ce paramètre pour que le jeu reste intéressant. Je sais que pour le joueur déterminé, Apple Assault 1.4 + Berry Bat offre un challenge digne de ce nom et pourrait ce content de max_apples_on_screen=128. Pour le gamin de la voisine, qui n'a pas encore maîtrisé le coup de "rebondir puis puncher", 5 pommes au niveau 1, c'est déjà chaud. Probable donc qu'Apple Assault 1.6 introduira un 'bonus/malus' qui permet de récupérer toute sa barre de vie, mais au prix d'une augmentation sensible du nombre maximum de pommes à l'écran. Le baroudeur intrépide verra là une occasion d'aller droit au challenge en faisant des gros points.
Il y a un dernier point que j'aimerais revisiter dans cet Apple Assault 1.6: faire en sorte que le bouton de punch fasse toujours quelque-chose même quand la barre de punch de Bilou est à zéro. Sans doute une sorte de pitchenette à la Worms qui fait juste faire un bond en arrière aux applemen.

Funny enough, it sounded like Piek doesn't remember he's the one who settled the ground for Apple Assault gameplay in first place. I, for sure, haven't forgot ;)

Tuesday, February 14, 2012

Apple Assault 1.5 : tops & flops

Hey there! Still reading ? great.
Deadlines at work somehow kept me away from my blog these last days, but I've got the time to play myself a little more with my 1.5 release, and I'm not so satisfied I actually released it anymore. If I was doing flash games rather than homebrew on a disintegrating scene, it might have cost me my fans and reputation.

  • Berry bat is effective. It forces the player to focus with an acceptable level of frustration.
  • Un-clumping makes level 3 less interesting, with most Applemen coming to you even if you don't explore what the level looks like (at least at very high incoming rates)
  • With over 60 applemen on screen, there is a number of situation where un-clumping no longer work. Applemen remain stuck in a short place where they constantly collide against each other, and don't seem to "walk" anymore. This in turn slows down the game severely due to the abnormally high amount of events that are generated.
  • I failed to solve the cluttering applemen problem. Especially, it remains hard to identify walking applemen that still manoeuvre through a bunch of stunned applemen.
I may return to it later on, for the sake of figuring out what makes the gameplay correct... but right now, the priority will be shifted (back) to make compound anims work and bring the school zone to life. If you've tried A.A-1.5 so far, feel free to fill the poll.

Semaines de dingue au boulot ... et donc pas trop la possibilité d'approcher mon blog à moins de 2 Mbit. Ça m'a par contre donné l'occasion de prendre du recul sur Apple Assault 1.5 ... si la chauve-souris-baie est plutôt réussie, la tentative d'éviter que les pommes ne s'agglutinent sur le haut de l'écran, en revanche, fait plutôt un four. Tout d'abord, les pommes viennent à toi, même si tu ne viens pas aux pommes -- en tout cas dans les niveaux 1 et 3. Ensuite, à partir d'une certaines densité de pommes (au 2eme passage en mode hard, notamment), les pommes commencent à se bloquer l'une-l'autre, à s'agglutiner encore plus sans même plus prendre la peine de se ballader à la recherche de Bilou. Le nombre de collisions pommes-pommes monte en flèche alors qu'il était supposé rester rare parce que provoquant O(N²) tests.

Saturday, February 04, 2012

Berry Bat Things

Hey, there! Cleaning up and tuning in are done. If you enjoyed once AppleAssault, but then stopped playing it because you didn't feel the challenge anymore, here's an update that you might love: AppleAssault -- BerryBat Things. The idea is simple: you've got limited time to clear up a level. As long as you punch applemen out of the arena, nothing bad will happen... But if you get lazy and that the applemen count remains the same for too long, a berry bat will come and tease you. You could manage to get rid of it, of course, but then another one will come soon, and then again another and another, again and again until you surrender (or focus on punching Applemen, after all).

So how comes you're still reading this ? Go and download it! -- oh, wait. Better pick the final release

Bilou! Le revoilou! Ok, je suis supposé bosser sur la School zone, mais j'ai une très bonne excuse pour recycler AppleAssault en ce début d'année 2012. J'ai enfin intégré les "berrybats" dans le jeu. Si vous aviez fini par faire le tour du jeu de 2010, autant vous prévenir tout de suite: vous allez faire une rechute!

A priori, le principe est toujours le même: assommez les pommes en leur sautant dessus, puis expédiez-les hors de l'arène d'un bon coup de poing. Ouaip. Sauf que maintenant, si vous passez trop de temps sans dégommer de pomme, une chauve-berrie (berrybat) viendra vous tirer les oreilles. Oh, bien sûr, vous parviendrez sans doute à vous en défaire, mais il en viendra alors encore et encore, de plus en plus vite. Jusqu'à ce que vous vous décidiez à vous concentrer sur la mission première: virer les pommes.

Prêts ? Moteur ... et .... Action!

Oh, and btw, make sure you're voting for the "success" of the new features in the side panel if you've played to v1.4 as well ;)

Monday, January 30, 2012

Unclump'm

Well, I've been using AppleAssault as a regression test when developing the new collision engine ... really just to make sure I'm not broking everything up, as there's nothing in AppleAssault that could benefit from the new engine, anyway. No pushable/carriable ennemies, no platforms. Nothing.

But of course, being in that source tree again (^_^), I wanted to give some ideas a try. The first one was to integrate berrybats in the game, as a way to force the player to focus on defeating applemen, and not just hop around. It now acts like a sort of indirect timer, appearing when you've been unfocused for too long... and appearing again and again until the lesson has been learnt :)
I'll need to work on the timing, though, so that the game doesn't become completely unfair :P

Un nouveau moteur de collision, c'est pas rien. Alors j'utilise AppleAssault pour m'assurer que tout fonctionne toujours bien au fil des modifications, même si la plupart des améliorations (pousser, ramasser, etc) ne sont pas à l'ordre du jour pour ce jeu précis. Mais, vous me connaissez: à trainer dans le code, j'en viens à me dire qu'on pourrait utiliser les chauve-souris pour forcer le joueur à s'attaquer au pommes ...

Un autre point, plus délicat, c'est de faire en sorte que les pommes cessent de se coller les unes aux autres. KirbyKid a raison là-dessus: ça pousse le non-réalisme vraiment trop loin. Je ne veux pas non plus en venir à un comportement de type goomba: il est prévu que les Applemen puissent se croiser s'ils arrivent en face l'un de l'autre, mais on ne devrait pas pouvoir en avoir 10 sur 2 pixels. Il me faut donc un test de collision entre-applemen, mais je vais devoir être prudent si je ne veux pas me retrouver avec des centaines de tests inutiles et vider la batterie de la DS en un rien de temps.

The second thing is linked to Kirby Kid's comments: Applemen tend to stick to each others, overcrowding on platforms, which isn't very realistic. I don't want to go for goombas-like behaviour: Applemen are design to be able to cross each other. Still, there shouldn't be 10 of them on 2 pixels. So I need to have a sort of applemen/applemen collision detection, but that should be handled with care, otherwise I could easily overload the collision engine with hundreds of (unnecessary) checks and dry the DS batteries in no time.

The approach I picked is to take advantage of a small transient state where the Applemen halts in front of a cliff, checking whether it will jump -- which you'd barely notice when playing the game. Only during these 2 frames, it actively checks for other Applemen in its immediate neighbourhood, and get "knocked out" of the platform if there was. Expect a revised .nds file to download in early February, as now, I still need to remove a *lot* of debugging printf ... and have a shower...
Oh, and some coffee would be nice as well... And a commit :) Cheers :)

Mais il y a dans la machine d'état de l'appleman un petit délai où il fait une pause en bout de plate-forme pour décider s'il va sauter ou non. ça pourrait être le bon moment pour tester s'il y a un autre appleman dans les alentours et se faire "éjecter" de la plate-forme si c'est le cas. On va tenter de vous permettre de télécharger ça début février, mais avant ça, j'ai une tonne de printf à retirer ^^"

Sunday, October 09, 2011

Apple Assault fait mouche

J'étais donc dans le Zurich-Bruxelles le week-end dernier. Presqu'une journée entière, en fait. Après quelques tentatives d'encrage du Bilou's Book abandonnées pour cause de virages un peu plus serrés que prévus, je déplie mon PC pour tenter de mettre en oeuvre les modifications du moteur de collisions dont j'ai parlé ces derniers jours... de mémoire, vu que si la SNCF a équipé son Vauban(?) de prises de courants depuis 2008, je n'ai toujours pas d'abonnement wifi-dans-le-train :P

C'est alors que débarquent Lucius, Harry et Ron qui viennent squatter "ma" banquette. Pendant que Lucius et Ron se chamaillent à coup d'iPhone, Harry tente désespérément de faire son devoir d'arithmancie. Il pose à ses camarades une question du genre "si, tu sais, t'as une droite ou un point et tu dois refaire un point ou une droite ...". Au bout de 2 minutes, je risque "symétrie", histoire d'avoir la paix. C'était bien ça. Ron, assis à côté de moi, semble impressionné, et me demande "c'est quoi mon métier". "Informaticien", que je réponds. "C'est vos e-mails", demande-t-il en voyant la fenêtre Xemacs. "Non", que je réponds, "c'est du code. Du C++. C'est mon moteur de jeu". Il n'a pas immédiatement relevé, mais au bout de 10 minutes de questions, je finis par lui sortir ma DS, lancer la dernière version de Apple Assault et je lui mets la console entre les mains. "Voilà: c'est le jeu que j'ai fait l'an dernier avec mon moteur de jeu. Maintenant j'essaie de l'améliorer pour pouvoir faire d'autres jeux".

Imagine, Ron, Lucius Draco and Harry in regular clothes, coming in your train and sitting next to you while you're coding upgrade to your collision engine. Ron was so curious about my job (since I was able to hint Harry on his math homework), and what is "code" for, what does a "game engine" do, en so on ... I finally picked up my DS in my bag and claimed. "Look, that's the video game I made last year with the code I'm updating now".

It merely took him some gameplay tips to start enjoying the game to the point Lucius couldn't resist to stand up and check what was going on. Both were previously toying with their iPhones, but Ron never complained about Apple Assault to be flat, old-school, odd or boring or whatever. He enjoyed it the same way I enjoyed Bomb Jack at his age... And when he handled me my DS back at his end station, he said "Informatics, that rulez!" -- "Yeah, I replied, but then you need to listen to your math and physics teacher well ;)"


Il lui a fallu quelques petits conseils pour pouvoir passer le premier niveau ("Waaaa, mortel!"), mais ensuite, le voilà lancé, posant ça et là des questions du genre "c'est vous qu'avez fait les pixels?" ou "on peut faire un jeu comme ça tout seul ?". Harry bougonne et continue son devoir, mais Lucius tend de plus en plus l'oeil par-dessus la console et finit par faire le tour pour s'asseoir sur l'accoudoir :) Ron ne me rendra la console qu'au moment de descendre du train, avec pour conclusion "C'est trop cool, informaticien !".
"Ouaip", que je réponds, "mais il faut bien bosser ses maths et sa physique".

quick gameplay note: despite my repeated suggestions that pressing (A) again while bouncing on ennemies would build up punch power faster, neither Ron, nor my colleague (and WP leader) Maugrey seemed to look at using that technique. As a result, they mostly had access to small-punch with limited range and efficience. Shooting a shuriken or doing a "big-punch" almost never occured during their game. When building levels further, bouncing on ennemies to reach a goal should be a refinement, not a basic feature to reach the level's exit.

Sunday, November 21, 2010

Last Minute Panic...

Mouais. Pas si finale que ça, finalement, la version 1.4 d'Apple Assault. En tout cas, elle mériterait bien un bugfix. Un conseil si vous devez faire une pause, fermez la console un niveau, pas entre deux niveaux. Disons que le suivi d'un pattern pour déclencher des actions sur certaines lignes n'aime pas trop qu'on laisse le pattern tourner sur l'ARM7 pendant que l'ARM9 est mis en veille.

It looks like the final release of Apple Assault might need some more tweaking, finally. Anyway, if you need a break during the game, close the lid within a level and not between two levels... You've been warned. Well, let's say the TrackSequence that follows an XM pattern launching actions such as clearing the screen and loading a new level isn't that happy when you suddenly freeze the ARM9 that executes commands while the ARM7 keeps playing the music :-/

I tried a trivial workaround, that slightly improves the situation. But it's not improved enough : there is an interference remaining between fading-out and fading-in actions that may leave the screen partly obscured for the next level >_<


Je croyais contourner le problème facilement mais ce n'est pas si évident: la preuve, le jeu n'est plus bloqué, mais il y a eu interférence entre les opérations avant-veille et après-veille ... et du coup, l'écran reste à moitié noir :P

Par contre, j'ai pu faire une petite démo à Pierrick et Parmy ... et ça, c'était bien chouette ^_^

edit: corrigé

Thursday, November 18, 2010

open-sourcing apple assault ...

The engine behind apple assault is open source from the start: this is my (modest) gift back to the world for having provided wonderful open tools such as Firefox, Linux, gcc and devkitpro. The problem so far is that pixel art, on its side, required a lot of work from myself, and I consider it as my own intellectual property that I want to keep under control. As a result, Apple Assault itself was closed source so far: publishing source without the art would not have run properly.

Le moteur d'Apple Assault -- tout comme l'ensemble des outils que j'ai développé pour DS -- est Open Source. C'est ma manière de récompenser tous ceux qui ont travaillé à d'autres produits open source que j'utilise tous les jours. Pourtant, jusqu'ici, il n'était pas possible d'avoir les sources complètes du jeu lui-même, notamment parce qu'il aurait de toutes façon été impossible d'obtenir une version fonctionnelle du jeu à partir de ces sources sans que je ne vous donne également les planches de sprites utilisées par le jeu. Et ça, je n'y tient pas: elles m'ont demandé des heures de travail créatif et acharné. Je souhaite qu'elles restent ma propriété intellectuelle.

Mais le petit script "8-bit-ify.pl" écrit ce midi devrait prochainement changer la donne: j'ai la possibilité de réduire la qualité des graphismes (leur donnant au passage un petit look 'C64' assez rigolo) tout en conservant l'entièreté de la fonctionnalité du jeu, et sans devoir passer par des phases de conversion de données fastidieuses. Avec le passage vers SVN comme outil de contrôle des version en prime, je devrais pouvoir vous proposer une version "commentée tutorielle" du jeu d'ici la fin du mois ^_^

Hopefully, I wrote a quick "8-bit-ify" script that convert the art (mostly killing details) such that it is still possible to compile and experiment, but not to fork a new project reusing the original sprites and tiles. Together with a switch to Subversion rather than CVS as the project revision control, you can expect a full open-source Apple Assault to come out soon as tutorial to the usage of my tools and libraries.

Somehow, it's fairly odd to play with those C64-feeling graphics at full framerate :P

source released on 24.12 MMX on Sourceforge.net

Saturday, November 13, 2010

Download AppleAssault 1.4

-- Oh wait. You could download version 1.6 instead !
Voilà, ma petite puce m'a enfin laissé assez de temps pour passer le dernier coup de polish sur Apple Assault que je peux du coup vous proposer en version "1.4". On y retrouve le "super-poing", des transitions entre les niveaux, correction de quelques bugs d'affichage dans l'écran-menu, support de la musique multi-piste amélioré. Je crois que c'est tout. En principe, ce sera la dernière version: je prépare un package "sources" et je passe à la suite.

See this post for the latest update on Apple Assault featuring the berry bat and revised apple rate.

Here you go: Apple Assault in its final "1.4" version. You keep fighting against apples, using your punch, big-punch, shuriken and evasive moves. This release introduce transitions between levels, improves support for multi-part soundtrack, and fixes minor graphical bugs in the menu screen. I don't plan to evolve this game further on : it's time to move to other Bilou games as soon as I have a source package released.


Introduction
Bilou et Bouli viennent juste de se crasher sur une planète étrange. Pendant que Bouli répare l'écran protecteur de l'Astrocruiser, Bilou doit faire face à une horde d'applemen déchainés !
Le jeu se joue sur 4 secteurs (nord-sud-est-ouest) que vous devez nettoyer avant de passer au suivant. Sautez d'abord sur les applemen avec (A) pour accumuler de la force de frappe que vous utiliserez pour les expédier au loin avec (B). A chaque vague d'assaut, les applemen sont plus nombreux. Jusqu'où tiendrez-vous ?

Bilou and Bouli have crashed on a strange planet. While Bouli is repairing the Astrocruiser's repellor shield, Bilou (the blue ball) has to keep hordes of crazy applemen away ! The game feature the four fields surrounding the cruiser that you must clean up so that Bouli can finish his job and provide you a safe retreat for further exploration. Stun the applemen by stomping them (A). That will provide you more punch power to dispatch the assaulters further away (B).
In each assault wave, the applemen will come back with reinforcement. How long will you stand ?


trucs & astuces
  • pour faire progresser la barre de punch plus vite, rebondissez sur les pommes (en réappuyant sur A au moment du choc)
  • les petits vers ne peuvent pas être éliminés, mais vous pouvez aussi rebondir dessus pour augmenter votre punch sans pour autant approcher les pommes.
  • dès que votre barre de punch est remplie (elle vire au jaune et une musique spéciale se fait entendre) , Bilou peut lancer un shuriken dévastateur. Par contre, celà vous videra de tout votre punch de moitié.
  • plus vous enchaînez les rebonds sans toucher le sol, plus votre score grimpera vite !
  • choisissez votre niveau de difficulté en mangeant des pommes dans le menu.
  • Funky Funghi, le champignon du niveau 4 est invulnérable. A contourner soigneusement.
Bug connu: bloquage du jeu possible si vous fermez la console pendant un chargement de niveau. Investigations en cours ...(corrigé dans la version -ld)

gameplay tips
  • you can build up your punch power faster if you press (A) again when bouncing on applemen
  • yellow worms can't be dispatched, but they can "help" Bilou building punch power while staying at safe distance from apples
  • once you've gathered enough power (your punch bar turns gold and the music change), you'll shoot a devastating shuriken instead of merely punching.
  • the more bounces you chain without touching the ground, the more you'll score.
  • check out the gameplay teaser video if you still can't beat level 2.
  • grab apples on the menu screen to select harder game difficulty.
  • Funky Funghi, the mushroom of level 4, cannot be defeated. Focus on the apples and don't mess with him.

If you think the gameplay choices are odd or bizarre, think of Apple Assault as a game in the lineage of Mario Bros. -- the initial, non-super one or Bubble Bobble


Historique sur dev-fr.org
Le projet sur Sourceforge

reported to work succesfully on R4, SuperCard DSTWO (Cid) and Acekard2i (Cid).
Fixed Bug: closing the lid just while the game (re)loads a level no longer leads to a livelock.

Special Thanks:

Wednesday, November 10, 2010

Apple Assault = ?€

If you're reading this with an RSS reader, chances are that you've missed the "You would buy Apple Assault for ..." poll that will close within 10 hours. The idea is simply to help me figuring out the new trends as I've never been that much into buying ringtones or logo myself, under the hypothesis that Apple Assault was available, polished in its ideal final version, e.g. on the DSi. So far, the poll suggests that 1€ would be a bit too high, and that ~40% of this blog's audience isn't ready for pay-download-and-play systems.

Voilà, si vous voulez participer à l'enquête "combien vaut Apple Assault", il vous reste encore 10 heures pour faire entendre votre voix. On parle ici d'un Apple Assault finalisé et hypothétique qui serait à la disposition des masses sur DSi Ware, par exemple, ou un "game store" similaire pour une autre console.
edit: poll closed, figures updated

Sunday, October 10, 2010

Apple Assault 1.3 "French Touch"

Petite release intermédiaire parce que vous le valez bien, et à la demande de mon frangin qui est en contact avec El Mobo (le musicien de Fury of the Furries, entre-autres) et qui voudrait bien lui montrer ce que donne sa musique à lui "in game". Mode d'emploi dans la présentation de la version 1.0.

Au programme, musique d'intro pour le menu, "Gros Poing" et musique spéciale quand vous pouvez lancer des shuriken. J'aurais bien attendu d'avoir les séquences "level clear!", "try again" et "game over" programmées, mais mon trip a Paris m'ayant retourné les trippes, on va se contenter de ce qu'on a :-P

One more step done, but not yet up to the goal. Here's Apple Assault the way it was "presented in Paris" last week, with the "jump-to-order" option to support shuriken-rush and menu sub-tunes, Big Punch for additional damages and ... well. That's all. If you never played Apple Assault so far, have a look at the game presentation post while the download is in progress.

Friday, September 10, 2010

External Actions

using sound(16,56) as 0 Bilou shoot
using sound(0,60) as 1 Bilou hit
using shgob(state28:= 0 :1 1 :0) as 2 Bilou, right punch
using shgob(state29:= 0 :1 1 ~ :0) as 3 Bilou, left punch
using shgob(state19:=$100 :0 $100 ~ :1) as 4 Bilou, stomped star
using shgob(state19:=$100 ~ :0 $100 ~ :1) as 5 Bilou, other stomped star
using shgob(state0:=D) as 6 throw a fake appleman (?)
using sound(17,64) as 7 Bilou bop
using shgob(state18:= 0 :1 v6 :0) as 8 Bilou, shuriken
using shgob(state0 is e:=D) as 9 throw an appleman



ça fait un peu peur, hein ? C'est ainsi que je définis en "gobscript" les différentes classes C++ qui peuvent être appelées et quels paramètres leur donner. Il ne me restera plus qu'à dire "x4x5x1" lors d'une transition pour qu'on voit deux petites étoiles jaillir de bilou avec un son "ouch". Et si je vous mets ça en ligne, c'est parce que je vous concocte un "mégapunch" à placer entre le "coup de poing de base" et le shuriken dans apple assault ... wait'n'see.

Did I scared you ? This is how you bind external C++ code to transitions in gobscript ... well, you'd still have to specify "x4x5x1" to have small stars shots while you hear an "aouch" sound. Why do I put *that* online, will you ask ? because I needed to have a better overview of those actions so that I pick the proper numbers for the "big punch" action I'm testing right now. Yeah. Big punch. Larger collision box, more apples dispatched, more fun. Wait"n"see :)

edit: Oh Yeah! The "Big Punch" definitely roxx! I still have to fine-tune it, so that e.g. the master player can use it mid-air to knock-out applemen below him; but ... Man! It let me score 10005000 at the hardest difficulty level, and it makes me play less cowardly! I can't wait to have those additional tunes and share a next apple assault release with you!

todo: add a "state%%->self on ... [condition] (action)" mechanism so that we can easily encode the rules for punching while walking, idle, jumping and falling ... and a prio % command in animtions to select the plane on which things are.

Tuesday, September 07, 2010

Ce qu'on en dit...

Histoire de prendre un peu la température, j'avais soumis Apple Assault à la compo Neoflash de l'été. Je ne m'attendais pas à gagner -- il faut dire que la concurrence est rude, avec notamment un excellent DuyuMania et ChewingBoy (de Morukutsu) -- quoi que ce soit, mais certains aspects des reviews m'étonnent quand-même. Petit tour d'horizon pour me détendre les neurones avant le rush mortel de demain.

If your dream wish is to have been turned into a blue Apple, this game makes that wish come true, but the red apples … well lets say they don’t like you and believe me, you don’t want to be next to the red apples, maybe if you grow up and jump from one tree to another you could be more delicious
Graphics: 4 -- Sound: 5 -- Control: 5 -- Fun: 7 -- Duration: 4
Bien sûr, le côté "graphisme" a souffert du look "damier-de-debugging", puisque c'est la version 1.1 qui a été soumise. Autre point récurrent et étonnant, c'est cette déclaration qu'il s'agit d'un "jeu bizarre"... Je note tout de même le côté "short range at attacks" que je dois effectivement ajuster (c'est déjà sur ma toudoulisse depuis les e-mails avec KirbyKid)
+Nice pixel art at the top screen
- weird game
- poor presentation on second screen
Graphics: great on the main screen. Lovely characters and backgrounds 2.5/2.5
Sound: Funny music but repetitive. 2/2.5
gameplay: good controls, odd style of game. Short range at attacks. A little bit difficult 2/5
Bugs found: No bugs were found, but has graphic corruption when changing levels
Will this stay on my memory stick? : Yes
Graphics: 15
Sound: 10
Controls: 10
Originality: 10
Fun: 10
Bonus: 5
Comments: An odd game, but the graphics are pretty decent. Bonus for open source.60/100
Tout juste une "satis'" donc, pour ce xam-ware de 2eme session ... De quoi alimenter la discussion avec les jeunes papas qui s'étonnent que je ne cherche pas à commercialiser la chose :P
Gfx: 10/20 -- Snd: 7/20 ( zik: 7/10, sfx: 0) -- fun: 10/20
idea: 10/20 -- Mi: 10 ( LT: 5/5, B:5/5, LO: 0/5) -- O: 5
I found this apple-game quite difficult to play. Graphics are OK and it’s nice to hear music, although it is repetitive and you can get sick of it. It's a pity that the bottom screen of the NDS is used to display the credits and some other ugly information, especially being a touchscreen.
See ? That's one amusing part of entering the Neo Compo. Not only you might win a prize for the best software (spoiler alert: I didn't), but you can win a prize for the best review of the submissions. The good news for me is that it gives me 'plenty' of feedback on Apple Assault 1.1

Sunday, September 05, 2010

Vuoi una mela ?

EDIT: {{Oh, wait ... final version is one click away}}


Allez, un peu d'upload avant de retourner me concentrer sur le Distributed Interference Minimisation de Matt'. Eh oui ...

Voilà donc la version "à l'italienne" de Apple Assault, avec un vrai écran de statut dans le bas (voilà qui fera plaisir sur gbarl.it ;) et des p'tites pommes sur le menu pour choisir son niveau de difficulté. J'ai aussi ajouté les manoeuvre d'évasions et ajusté le gameplay des tableaux 1 et 2.

Presto ... a new release of Apple Assault, now featuring difficulty selection (the more apples you eat on the menu screen, the harder it will be), evasive moves, improved gameplay and a shiny bottom screen to show you your health and punch bars.

Ps: this is release "-it" because bottom screen update was initially requested on gbarl.it :)

E meglio cosi?

[.es] Personajes y Controles (nds.scenebeta.nds) [/.es]
mirror on FileTrip
backstory, instructions and tips
Do you really want to download an intermediate - work-in-progress version ? for the final one, move your eyes above!

Tuesday, August 24, 2010

They do clump a lot

I've been an attentive reader of KirbyKid's writings on level design for a couple of years, now, so I sent him a copy of Apple Assault v1.1, asking for advices on a few points where my "regular consultants" and I tend to disagree. I was happy and honoured to find his in-depth reply in my mailbox this morning. I'll sure have things to think about and experiments to run in the next weeks.

A force que la plupart de mes "consultants réguliers" (comprenez, CJ, Cyril et Gédéon) me contredisent sur certains choix de design pendant les préparatifs d'AppleAssault, et vu les commentaires peu instructifs récoltés sur dev-fr, j'ai fini par profiter que j'avais un binaire prêt-à-l'emploi pour demander l'avis d'un quasi-pro du level design, j'ai nommé Krazy Kirby Kid. Après quelques échanges de commentaires et d'e-mails, j'ai reçu ce matin sa réponse détaillée dans ma boîte aux lettre, que j'ai ouverte avec une excitation assez proche d'une réponse-du-Père-Noël. Il faut dire que je suis le blog de KirbyKid depuis près de 2 ans et que ses essais sur les "blind-boxes", les "core mechanics" et autre DKART. Un des aspects qui me turlupinait, c'est cette tendance qu'ont les applemen à "s'agglutiner" pour former des chenilles

I had issues with the "wiggler/lemmings" aspect of applemen behaviour, and my initial idea was to make "fall of cliff" somehow probabilistic. KirbyKid pointed out that

I like working with simple predictable enemies. They [Applemen] do clump up a lot though. The issue I have with this is that they can clutter the game (...) [and it] makes it easier for an appleman to sneak behind a stunned appleman and hit you.


La bonne nouvelle, c'est que l'avis extérieur de KirbyKid me motive à faire des expérimentations alors que j'ai plutôt tendance à justifier ma position vis-à-vis de mes "voisins de VTJ". Ou alors il a juste réussi à trouver les arguments vraiment convaincants. Bref, voyons ce qu'on peut faire pour éviter les "grappes" d'applemen, en particulier compte tenu du fait qu'un tel attroupement rend plus difficile l'identification des applemen encore "en course".

Let's experiment another strategy, then ... something more bio-inspired, such as generators that "sense" how many applemen exists in their surrounding and self-inhibit the generation of applemen if a certain density is reached.
state1->state2 on done
state2->state1 on found0
state2->state1 on done [c#applemen# 0 >] (x#throw_appleman# d#applemen#)


Petite idée "bio-inspirée" pour éviter ça: rendre le générateur d'applemen plus sensible à son environnement ... par exemple l'empêcher de générer un nouvel appleman s'il en a vu un récemment. J'ai déjà des zones-de-détections (cf la boîte bleue sur le schéma) que l'appleman utilise pour "voir" Bilou et l'attaquer, c'est le même principe. Sauf qu'ici, celà provoquera le retour anticipé de l'état "sonder l'environnement" (state2) vers l'état "attendre" (state1) alors que la génération d'un nouvel appleman se fait normalement à la fin de l'animation de state2 (à condition qu'il y ait encore des applemen à générer, bien-sûr).

It is actually surprisingly easy to tweak: an additional state (state2) is added to the FSM ruling the generator, which has an "active test area" (depicted in blue) and it will remain in this state only for a few frame, while state1 covers the majority of the inter-applemen delay. We can leave state2 either because an appleman has entered the "sensitive area" of the generator (in which case nothing happens) or because the delay for state2 has expired, and only then we throw a new appleman and decrement the number of applemen still to be generated.

Pour peaufiner, je peux faire en sorte que l'appleman soit à son tour "sensible" à l'annulation d'une génération et du coup "quitte le nid". Ca marche assez bien sur le niveau 1, en tout cas.

An additional tweak allowed the applemen to "sense back" such detection and, when this happens when they're on a cliff, make them jump off. In this way, applemen no longer "stick in their trunk hideout forever" on map #1: after a short time, they will leave the safety of the hollow trees and explore the surroundings. That should make them clump much less, although it's not yet a full-proof solution.

edit: I only gave these new game rules a few tries, but it looks like it doesn't make difficulty increasing with levels. At least, it doesn't make me feel that the game is getting harder, just that the levels are longer and longer to play, and I've been tempted to stop playing when I reached the map #1 with >60 applemen to attract out of there trees. I may need to find something else so that running applemen cannot ambush behind stunned applemen. The fact that the priority of two applemen solely depend on the OAM registers they use doesn't help 0_o


Au final, l'approche n'est pas vraiment concluante. Le niveau 1 est rasoir (sauter pour attirer 60 applemen ou les voir approcher au compte-goutte ... bof. Le niveau 2 déséquilibré (certains "trous" n'auront généré que 2 applemen, et un bug fait que certains restent "cachés" dans leur arbre. Les niveaux 3 et 4 ont leurs générateurs trop loin des applemen et ne sont donc de toutes façons pas affectés. Bref un "compteur global du nombre d'applemen présent à l'écran" aurait été tout aussi (sinon plus) efficace. Je devrais avoir moyen d'arranger les niveaux 1 et 2 avec un "nombre de saut autorisés" défini pour chaque générateur, par contre.