On Sunday 10 February 2008, Robert Schuster wrote: > Hi, > its me again. :) > > You may add fic gta01 (armv4t) to your ports list: > http://scap.linuxtogo.org No one's safe from the Kobo addiction now! ;-) > David Olofson schrieb: > > On Sunday 10 February 2008, Robert Schuster wrote: > > [...] > >> The real issue is that with a device having less (or no) keys, no > >> joystick and most often only a touch screen game control has to be > >> rethought a bit. :) > > > > Yeah, that's what I figured. :-) > I found the "mouse" option (without text this was difficulet to set > in menu) and switched it on. Now I can steer by moving a pointer > across the touchscreen. That is pretty neat. You can literally point > at the enemies. DOH! Maybe I should have pointed that out. :-D (Pun not intended!) It just seemed too obvious, but... > On the small neo screen my hand was in the way a lot. ...I figured that would be a problem. :-) > For the Neo the menu controls need to be changed a bit: Button one > could be "move to the next item", button two "invoke". No problem, I think... Menu navigation is circular. (I *think* that goes for all value entry "widgets" as well, but I could be forgetting something. Looooong way around in some cases though...) Either way, I'm having some ideas about some more modern GUI solution, similar to that in the Steam games from Valve; dialog windows with buttons and stuff. That should make touch screens usable out of the box, I think. > Furthermore it should not react so quickly on mouse presses, > every 'move' with the pen is a click ... Hmm... Seems like that would need some device specific filtering. And, in fact, the menu system reacting on mouse clicks is actually a bug anyway; the meny system doesn't support mouse navigation! :-) > I will try to get that working later. Well... I think you'd have to ignore mouse motion and translate clicks into the appropriate focus changes + activations. Should be a simple hack, but if it isn't, I wouldn't waste too much time on it, as it might be thrown out soon anyway. [...] > Still I have found out something that is weird: The Neo can operate > in two screen orientation ( 480x640 (default) and 640x480 > (rotated) ). > > In the first video mode text display is just fine. However in > 640x480 (where kobo makes much better use of the display area) it is > not. :$ Unless the rotation is implemented in hardware, I'd think it's SDL that does the rotation. If so, that would mean SDL uses an internal shadow surface, and that may well mean that you get a different pixel format or something. Or perhaps there is something wrong with alpha blending in that SDL version...? (That would likely be disabled when a shadow surface is used, as many APIs only accelerate blits to the screen.) Does it attempt to use hardware acceleration for the blits? [...] > >> That would be good for embedded-cpus without fpu. The N800/N810s > >> have such a thing however. :) > > > > Well, I know about the VFP, but that appears to be a SIMD > > extension or similar. Is that actually usable without specific > > code? > No the VFP is a modern FPU for the arm cores. Yeah, I read up a little on it... Looks like pretty nice stuff. > Btw: If you had not said these things about the sound engine I > wouldn't have noticed. Sound and music on the n800 are quite good. > It begins to studder when you leave fullscreen mode (some other app > interferes) but otherwise it is ok. Ok. Might have to up the buffering/latency a bit then... Or maybe lower the mixing quality, if the CPU load is the problem. What's the output sample rate? (If it's significantly lower than 44.1 kHz, it might cause the adaptive oversampling to kick in and increase CPU load, as many of the sounds are rendered at 16 kHz or higher.) BTW, would you know if the audio driver supports memory mapped I/O, ie shared DMA buffer? (That would allow substantial buffering for solid playback, alongside with "asynchronous" mixing for near zero latency. Stock SDL doesn't support that, but most backends already use memory mapped I/O, so it shouldn't be too hard to get at those buffers if desired.) [...] > > This was pre 0.5.1, so it's most probably a lot worse now. The > > rendering time is close to two seconds even on my Q6600 @ 3 GHz. > > (Only one core used, but still...) > Ah now I get it. You mean the preparation/loading at the beginning. > Yeah, this takes a while on the Nokia but it is not that bad. Ok. Well, there is the caching, but some healthy optimizations would probably eliminate the need for that. > Completely different thing on the Neo (without fpu): It took around > ten minutes... Yeah... *hehe* > On a completely different topic: Have you ever thought about adding > a multiplayer option? Yeah, I think there are some notes about it in the TODO file. > Something like red player has his red bases and blue player has his > blue bases. Whoever destroys the other's base faster wins. Red stuff > can shoot blue stuff and vice versa. How flexible is the game's > engine in this regard? Well, it's all hardwired C++, but it's simple and well structured. Should be pretty trivial to get multiple player ships on the map and stuff like that. The hard part (in any real time multiplayer game) is dealing with latencies and synchronization of game states. Unless you can rely on a constant network latency of less than 10 ms or so, you absolutely need the clients to run asynchronously, and to deal with any significant latencies, you need prediction. Then again, as far as human players are concerned, you can't do much more than assume that the input state doesn't change between updates. The rest (AI ships) can run locally on the standard game logic, I suppose... That way, enemies will do their stuff as usual, the chain reactions when bases explode will work smoothly etc. One would need to add support for "forced corrections" of the game state for when the clients (or client/server) disagree when resyncing. Problem is passing the whole state around is just way too much data (hint: ENEMY_MAX is 2048 ;-), and passing deltas is kind of hard when everything's changing on both sides. Easiest way might actually be to implement a "world snapshot" feature, so that the world state can be rolled back to the time of the last sync and then replayed with the correct input data from both players as it becomes available. That way, only player input data should have to be transmitted, and that's just four bits per 30 ms, raw. :-) Oh, and there are five different base themes now, so... Five players, free for all? Or why not two or more teams, with virtually unlimited numbers of players? :-D That said, I'm not planning on having "official" multiplayer support in 1.0.0. The idea is to bring Kobo Deluxe up to "commercial quality" ASAP, and that's quite some work even for the basic "refurbished XKobo" feature set. Truth to be told, I'm sort of using Kobo Deluxe as a pilot project for future shareware projects, but that doesn't really change anything at this point. Still have to work on other things for food etc. //David Olofson - Programmer, Composer, Open Source Advocate .------- http://olofson.net - Games, SDL examples -------. | http://zeespace.net - 2.5D rendering engine | | http://audiality.org - Music/audio engine | | http://eel.olofson.net - Real time scripting | '-- http://www.reologica.se - Rheology instrumentation --'