Game Development Community

Yesterdays IRC hour and iT2D

by Marc Dreamora Schaerer · in iTorque 2D · 07/16/2009 (6:18 pm) · 17 replies

I just read through the chat from yesterdays irc hour and found

Quote:<TimMGT> T2D also the upgrade for iTGB?
<Midhir> That would be good
<[GG]Mich> We are looking at a similar overhaul for our iPhone engines
-->| DaveMB[GG] (~DaveMB@97-121-32-1.bois.qwest.net) has joined #GarageGames
<[GG]Mich> We will be rebranding them to fit with our main engines
<[GG]Mich> So there will be an Torque 2D for the iphone and a Torque 3D For the iPhone

I know there is generally no information shared on anything in relation to T2D (at least by CC we will get to see something :) ), but I think its fair to assume that the iTGB update to it will be free as iTGB is still fresh and already in sync with the new Indie (non-hobbiest) prices, especially considered the state in which iTGB is with its missing iPhone optimizations (VFP for matrix and vector math, pooling for sceneobjects instead of killing the performance with alloc / dealloc of objects, ...), which at least to me still make it impossible to recommend iTGB as it is not out of beta for an iPhone technology (TGB itself is fine and well suited for its target platform)

#1
07/17/2009 (6:36 am)
I believe VFP math is actually slower on the new iPhone 3GS, check out the more recent comments here (great blog regardless of vfp/iphone info btw): diaryofagraphicsprogrammer.blogspot.com/2008/11/iphone-arm-vfp-code.html
#2
07/17/2009 (9:15 am)
the 3GS cpu is so much faster due to raw clocking and the new better equipped cpu, that it does not require the VFP to have performance left for actual gameplay. Also with its programmable vertex and pixel pipeline its able to remove stuff from the cpu that we will never be able to, but with the VFP we at least can move the transformation calculation away from the cpu

Fact is that 95%+ of all iPhone users significantly benefit from the VFP code.

Additionally the 3GS has the Neon, which is twice as fast as the VFP
#3
07/22/2009 (7:53 am)
I'm famous. You caught me logging in!
#4
07/22/2009 (8:28 am)
I'm sorry but I'm missing the sense of humor when it comes to the still pending and actively ignored topic of iTGB not deliverying what it advertises and that 8 months after its launch.

Its great to see that the T3D Beta is beeing handled professionally, at the same time its horrible state in which iTGB is beeing left.
It has massive major problems and nobody gives the least shit about it, neither are refunds granted for this broken mess.

iTGB 1.2 has been out for quite a while now, 1.2.1 was meant to follow up to fix a few of the bugs that were present since launch and/or introduced with 1.2.
But by the time that has passed, 1.2.1 is already a thing of the past again as 2.5 months for a hotfix release is too long especially if 1.3.0 is meant to resolve problems with 1.2.0 and things it still lacks although they have been advertised on the page since iTGB 1.0 soon

So if you find time to take part to make fun of waiting licensees, any chance that you ensure that the responsible parties for this mess take part as well instead of hiding away or finally grant refunds with the same spirit by which you take the payment for something that you are false advertising by intend?
I think the majority here has definitely shown a large community spirit and patience and really nobody of us iTGB "idiots" (we payed for something we didn't get) deserves beeing ignored and handled like we are.
#5
07/22/2009 (9:07 am)
I'm not sure where you think I'm making fun of waiting licensees, Marc. It seems a kneejerk reaction to your frustrations with the engine, which you have mentioned in the past, when I happened to post about seeing my name in an IRC log. I'm not sure why you feel that I'm making fun of you or somehow beating up the community.

iTGB is not being left in a horrible state; and, actually, is not in a horrible state or a mess. Sure, it can be improved, and we are working to improve it. While I know that you are unhappy with the engine and feel that it cannot be used from your comments, others are currently developing games with it and doing well.

There are hurdles to jump with every engine, especially when it comes to a mobile engine, and we are working on them. And the developers using the engine are working around or on their own hurdles while making their games. I'm sorry that we're not working on the changes fast enough for you. I wish we could be as transparent about our work as open source engines; it would make my life a lot easier.

Also, no one said that anyone here is an idiot; I'm not sure where you get that idea. We have a great, dedicated community of developers who have already released products on the iPhone with more on the way. We are working on the engine and have tried to be transparent with our roadmap and opening the forums. Mich requested information from the community about the engine enhancements because we really want to move forward in the best way possible for all of us.

So, sorry I had a little fun in your topic. I didn't mean to offend you by posting or seem to be poking the iTGB community with a stick. I obviously did cause offense from the vitriol in your reply, but that was never my intent.
#6
07/22/2009 (9:29 am)
Torque 2D announcement (not that interesting, just the fact that T2D exists and supports networking - and info will be released each week, like they did for Torque 3D)

http://www.ustream.tv/recorded/1848280

(audio is horrible)
#7
07/22/2009 (9:46 am)
Am I frustrated: Yes definitely.
There are various major problems known and beeing identified by the community, without any officially responsible for it even feeling like taking part (Memory Leak on object delete as an example).
I've spent a good 60 hours on adressing a few of the things just to get backshoot by other things again that actively enforce bad and stupid behaviors in iTGB that work more than just slightly against the iPhone.
This has cost me that much time that I'm now at the point where I am recreating a prototype of my game in Cocos2D to see how it performs there.
From all my time spent with iTGB so far, only 10-15% were for my game, the majority of the time was spent on technology problems that I need to have fixed before I can even use it further.


Why does it feel like kind of making fun: Because you picked out the single completely non-important thing from the log, while the rest was beeing ignored as most questions that are beeing posted that are of importance (not needfully from you but from those responsible for the corresponding aspects). I copied the whole log so others are able to find the corresponding area in the IRC hour log themself too.


iTGB games in development:
I've yet to see a single released iTGB game that offers a rich (visual) game experience while maintaining acceptable performance and still beeing using iTGB instead of having ripped appart and rewritting the engine to do the stuff its meant to do out of the box.
iTGB does not even do the basic jobs for deliverying that as nobody so far thought it would be important to put object pooling and batch rendering at the top of the priority list as it seems.


The performance problems have not needfully to do with the game developer beeing unable to use the engine, its just as often a problem with the engine not beeing iPhone targeted in combination with platform hacks (its impossible to call it anything else as something that obviously never was tested and is completely broken just is a hack) actually kills an engine that could be a great technology for 2D game development the iPhone.
To make it worse, there has not been any sign that there is even interest to adress those problems.

Reports from people who invest serious time in finding out why something is broken, works against iPhone coding standards or missbehaves instead of just reporting the problem (-> are doing the job of the developers) are not taken with the priority they should or are ignored alltogether just to give another example of whats going wrong here right now.


Its one thing that iTGB 1.2 is still a beta release if you want to use it for iPhone development (the mac build of the editors is broken that badly that the float out menues in the editor don't even work. The build functionality is broken just as much. Do you really want to call that a $500 quality product or even an acceptable level of Q&A? I really don't hope so), while it works pretty nicely if you wanted to create a windows game with it?!?!?!


Quote:There are hurdles to jump with every engine, especially when it comes to a mobile engine, and we are working on them.

Yes there are.
But obviously you expect us to do the developers job, because its not our job to fix things in the engine that are focused on the desktop only and don't work or even worse work actively against common basic behaviours on the iphone.
As a matter of facts, the devs don't even follow their own recommendations / guidelines on how to receive better performance within their area of responsibility.

The situation MUST finally be adressed, you can't really expect the community to do all the work and integrate it then into the next builds (see multitouch support for 1.3, although you advertised multitouch since 1.1 at least)
We payed $500 on a source addon that doesn't do its job right. At best it does it partially right but thats it.

So please, if you believe that iTGB is that capable, give iTGB a go yourself, experience it yourself, create a somewhere rich iphone game and if you then still feel that its really an iphone targeted technology that does its job as advertised, I would be more than happy to hear about what you did to achieve that.
#8
07/22/2009 (10:43 am)
I'm not sure what your definition of a "rich iPhone game" is, but the iPhone games released that were made with iTGB have very good quality in comparison to others in the App Store. I think they've done a pretty good job. We've been lucky that the games made with iTGB have had strong developers behind them that release high-quality products. Are they rich experiences? I'm not sure; but I've enjoyed what the game developers have brought to the table so far using iTGB.

I work with the bug database every day and know that the dev's watch the bog reports here on the forums as well. Mich has been really good at trying to post fixes he comes across as well as discussing issues; and the community is great at posting their own fixes as well. It would be nice to make it more transparent so that you have insight into the internal development process and do not have to try to figure it out and make assertions about it being unorganized or not happening or whatnot. I'm not sure how to do that on a realistic scale.

We're not asking you to do our job. We're doing it and trying to address issues that have been brought up. And I can understand the frustration of not hearing what the progress is on that front and feeling left behind since we're working hard on getting the message out on Torque 3D. We've talked about different ideas to keep people more up-to-date on what is happening in the background, but haven't come up with a good way to do it yet. Mich is trying to keep people updated on progress and cool things that are being done with iTGB, but he's also up to his ears in Torque 3D documentation.

Good luck with your Cocos2 port. It's a great LGPL library. I would like to see a game released with it that had more polish; of course, I think that about most of the games in the App Store.
#9
07/22/2009 (12:18 pm)
Quote:
I've yet to see a single released iTGB game that offers a rich (visual) game experience while maintaining acceptable performance and still beeing using iTGB instead of having ripped appart and rewritting the engine to do the stuff its meant to do out of the box

I'm also curious what "rich" would mean. I got the TGB Kart Kit running at a high frame rate with what I'd define as good quality. In terms of art / sound, I think Starcassonne is quality. "Attack of the Dust Bunnies" also looks really good, imo. I can't speak for Geoff, but all my code changes have been fairly minor.
#10
07/22/2009 (12:28 pm)
Rich, at least to me, means a game with various different things on the screen at a time, not a dozen sprites and at best a "background"

Already having something pretty simple like the adventure kit on the iphone brings iTGB to the point of unplayability. Same goes for the shooter kit component which never goes above 18 FPS and commonly runs at 12 - 15 FPS on an itouch 1st generation for example.
But thats actually not the most shocking thing, at least to me: When do you know that the iTGB technology requires significant work? If a simple shoot'em'up on the iphone runs at 15FPS with 30% gpu usage and is fully cpu limited and that without using sound at all.
Thats the current state of iTGB by 1.2.

I hope you see that as a major problem too. if 15 stutterFPS on barebone sample sounds like a fine performance for an iPhone targeted technology to you then I'm really out of arguments.



What I don't understand is why its possible to drive a good and clear development with T3D, which means that GG knows how that looks while at the same time iTGB is really handled like the ugly little gnome kid one would hide in the cellar where its not seen and not heard.
iTGB clearly was put out of reach for the hobbiests sector like T3D with its price (T3D is $705 with no offers for TGEA owners ($295), while iTGB is $500 for TGB Pro owners ($250)) and as such I have my expectations on the quality of what I'm getting and I think those expectations are pretty realistic (to me iTGB is overpriced and iTGE underpriced as long as TGB Pro & TGE ownerships are required as a full 3D engine is much harder to optimize than a planar 2D environment)

Sure, T3D likely has a much larger dedicated dev staff but from what I see I'm kind of forced to assume that there is only a very little dedicated staff for iTorque at all (although iTGB costs an additional 2x TGB Pro and iTGE costs an additional 3.x TGE license fee on its own) and not a single dedicated dev working fulltime on iTGB.


Quote:It would be nice to make it more transparent so that you have insight into the internal development process and do not have to try to figure it out and make assertions about it being unorganized or not happening or whatnot. I'm not sure how to do that on a realistic scale.

While that would be nice I'm aware how unrealistic it is.
As lteast to me as indie enduser, the problem is caused by:
1. The quality of the releases, which is awfull.
I'm still waiting on the first tested and working Mac iTGB release and that although the mac is the primary platform for iTGB as iPhone = Mac.

2. The development process for new versions is very slow and intend things don't happen within the appropriate timeframe (1.2.1 hotfix release)

iTGB already started with a much worse situation that all other Torque techs:

1. Indies weren't locked out during beta

If iTGB went through a similar beta cycle as any other Torque technology since TGEA it would be in a much more usable state.
iTGB 1.2 to me is nothing else but Beta 3 of iTGB although I've to say that T3D Beta 3 definitely is in a much better production ready state than iTGB.

2. iTGB would have been priced appropriately for its state, iPhone focus and optimization.
Is it really twice as much worth as TGB Pro for what iTGB minus TGB Pro capabilities offers? Is ignoring / actively working against official Apple basic guidelines on how to optimize rendering and ressources is worth that much?


I'm not really happy to even consider switching so I will list the two major reasons why I am doing so:

1. I'm forced to rewrite the t2dSceneObject to stop locking the OS to death with alloc and dealloc of memory
2. The override of the new operator in iPhoneMemory is completely iphone unfriendly. Its not possible anymore to use common 3rd party iphone libraries as this override breaks/fights with the regular GCC 4.0 new operator. The most prominent victim of the operator hack is OpenFeint which can no longer be used.

Questions in relation to both things (new op in its own thread, pooling in the 1.3 planning thread) were completely ignored.


My suggestion for the next iTGB version would be: Create a graphically simple but gameplay and "ongoing" wise rich game (Behavior Shooter 2.0 for example, simple main menu 1-2 missions, high score list), add some common 3rd party technology to it (OpenFeint for example) and get it to work without rewritting iTGB more than required to link in OpenFeint by its own integration docs.
If thats possible, starts up in the appropriate time for the main menu and gives you 30FPS on an itouch 1st generation, you have achieved what many here are looking for and invest their own time to achieve, an iphone targeted technology or the real iTGB 1.0
#11
07/22/2009 (12:33 pm)
@Chris: I'm still waiting for an answer on the "Attack of the Dust Bunnies" video because from the video it looked like the game stutters and I really can't think a much simpler game base concept for a 2D iphone game than this one purely concept and tech requirement wise.

Can't comment how good the kart kit works as I don't own it to test it on a 1st generation iTouch, neither can I comment how it works technically. But I didn't see denser situations with more than a <= a dozen sprites and the mode7 tilemap.
#12
07/22/2009 (2:04 pm)
Quote:
Can't comment how good the kart kit works as I don't own it to test it on a 1st generation iTouch, neither can I comment how it works technically. But I didn't see denser situations with more than a <= a dozen sprites and the mode7 tilemap.

Actually, I don't know how it runs on a 1st gen touch either. 2nd gen it runs smooth, around 24 fps. I'm not sure how many sprites it has exactly, but I'd guess for one of the tracks probably two 1024x1024 kart sprites (framed), two 512x512 sign sprites (framed), ~eight tree sprites, three 512x512 scrollers (backgrounds + track), two 128x128 scrollers, two 256x256 lake sprites, and a handful of powerup sprites created on the fly (oil spills). So that's approx. 20 objects right there.

All of it's actually in duplicate, with the "parent" objects being manipulated in a hidden sceneWindow and a second set of "child" objects displayed in a visible "3D" window and synced (in C++) to the parents in real-time. So that's 40 objects the engine is manipulating in some fashion.

Given how choppy the shooter demo that comes with iTGB, I was pleasantly surprised how much performance I was able to get. I'm not sure what the trick is... I used a combo of PVRs, some key loops ported to C++, and proper sprite scaling.

I brought up Starcassonne (in review right now) because it actually has toward the end of the game something like 80-100 sprites on the screen. Only one ever moves at a time (when the computer places a tile), but I haven't had any slowdown with it. Scrolls smoothly, music is never interrupted, etc.

Going back to that .delete() memory leak... I'm not sure that really is the cause of the leak. I experienced the problem with my all-script version of Starcassonne (then called "Xeno Sola") and removing all deletes did not fix the problem. I don't know what caused it. It shouldn't be there but, from my end, it wasn't obvious what caused it.

Anyway, to sum up, I understand your frustration. I just don't think things are as bleak as you've painted them. :)
#13
07/22/2009 (2:38 pm)
24 FPS is very low.
That means around 15 FPS on a first generation iTouch only.


You are right, you can get quite some performance gains with proper replacements of the given stuff. I've gotten the component shooter to 18 - 23FPS on my 1st gen itouch from 12 - 15, which is a fair jump upwards.
But it required a lot of work and different changes and fixes in the engine (the UseNetwork = false beeing completely broken bugreport is one of the things from the work to get it there).

I'm hammering the component shooter that heavy as an example because my game has a shooter base on which it expands and right now I can't even approach the additional things over the trivial shooter as I first have this one to run usefully and with a stable performance.

Its not like I'm at the end of the list of what I can optimize, but various things on my list are things that the engine is actually meant to do in an iPhone engine, for example offer an integrated pooling system / template factory with pooling.

I've finished large parts of my work on a t2dSceneObject template pooled factory that will hopefully solve these problem once and for all, so I can finally start to work on my actual gameplay and go out to search for an artist to get the visual side in sync too.


But this kind of functionality is definitely functionality I would expect the engine to offer out of the box for a mobile platform targeted engine. After all, the devs should know the basics on mobile dev at least as good as we especially if the common answer that is placed from GGs end is "its a mobile platform you have to ..." yet its mainly iTGB and its core & samples that are failing to follow exactly these and other basic things.




Starcassone has been an interesting thing since I first read about it. Hope it will do fine.
A question on the mentioned data: Is that with all beeing on screen or only a small fraction like you would have it in carcassone on pc etc?


As for the memory leak: If the app is beeing run with the memory instrument the actual source of leak can be seen. Don't remember out of head what it was, but its always the same place. But I haven't looked any deeper in it as I have a very small leak only, 12k or alike per 30+ seconds, and thus no reason to approach it right now. None the less, one would expect to have a developer taking part in the thread as a memory leak is a major problem that must be adressed as soon as possible and not "somewhen".
#14
07/22/2009 (7:14 pm)
Well I disagree that 24 FPS is a bad rate. It's not ideal, but it gets the job done well enough. I've personally not tried to optimize the engine to push that up, though I imagine it's possible to squeeze a few more FPS out of it. :)

Quote:
A question on the mentioned data: Is that with all beeing on screen or only a small fraction like you would have it in carcassone on pc etc?

Almost all of it is on screen. It's not until you've placed about 30 tiles before you have to scroll around too much to see the board. And actually all those tiles have physics turned on just for the sake of the computer faking that it's placing a tile. So in that sense it probably could go faster if I updated it to turn off physics once the tile is placed.

Quote:
As for the memory leak: If the app is beeing run with the memory instrument the actual source of leak can be seen.

Yup. I did that too. That's why I said I saw the leak even when I didn't delete anything. It was almost like I did something "wrong" in script early on and from then on the game leaked at the same rate no matter what. It always came after the first sprite was created... so I found it very odd.

There were actually 2 leaks. A slow one that didn't threaten a crash.. that might have been the 12k leak you're mentioning. And then a second leak that was going at about 1 MB per minute.... insanely bad. I really don't know what that game did to cause it.
#15
07/22/2009 (7:50 pm)
I didn't meant to imply that 24FPS is bad.
But the problem is that it is 24FPS on the 2nd gen iTouch which is up to 100% faster than the 1st gen itouch and a good 50% faster than the 3G.

Thats why I meant with above, as it is potentially insufficient FPS wise, as it means that the 1st gen itouch won't be able to run it at all without enjoying "stutter ville"

and that likely not due to the graphics but due to problems with the engine code, as the component shooter, even after fixing the mutex (not all mutex calls are enclosed in the multithread define) and network problems (network shutdown does not work, the async stuff is still running, the mutex still locking the app) shows very well, as the gpu never is able to get really higher than 50% (and if then not long) as the cpu is running up the walls on the "old 3" 400mhz devices.
thats actually pretty bad as it directly impacts the input handling and energy consumption and that without any benefit.
Thats the reason why I've also been looking into VFP coding to see how much I gain from having the vector and matrix math no longer on the cpu as we all know from TGB times that the TGB physics isn't exactly optimized.

Leak: haven't seen the second one yet as far as I remember, but I didn't do that much yet (two dozen sprites at a time at max, 5 tile layers for parallax backgrounds and at max a dozen particle emitters), just main menu -> mission and directly to mission. No main menu -> mission -> main menu -> ... where cleanup issues in iTGB could trigger in.
#16
07/23/2009 (9:39 am)
Hey Guys,

I don't see any stuttering on Attack of the Dust Bunnies that you are talking about Marc. I'll record some 720p video tonight of Dust Bunnies running on a 1st gen iPod Touch to give you a better idea. Dust Bunnies averages about 25fps on a 1st gen iPod touch (and of course higher on newer devices).

After I record the video and upload it, I'll post in this thread again, as well as give a much longer response regarding our experiences with iTGB (mostly positive!) and my experience in the game industry for the past 3 years using other engines and how they relate to my experience with Garage Games and Torque :)
#17
07/23/2009 (6:58 pm)
That actually sounds much better than it visually appeared.
I wasn't sure if it is a stutter or something related to the video, where it appeared to stutter at the point where you were on the left side of the scenery and the bunny hops out behind the object for example.


No need for extra work for the video, fully believe you :)


Torque in general is a pretty nice technology (otherwise I wouldn't have bought T3D Pro in beta after my experience with TGEA in its beta ^^) in general and I like it or at least much of it :)
But the iPhone spin offs currently have by far too meany desktop targeted code in (code that bases on the assumptions that the driver will resort the mess thrown at the gpu and alike, for example the "each particle and tile on a tile layer is an own vertex array" bomb approach, things that are known complete no goes on the iPhone)


My major frustration is, aside from such problems which I can resolve within a given (normally not usefull nor really acceptable timeframe but thats the price I guess), there are design decisions that break stuff completely if you want to use it as a part of your iphone product. I would love to see GG creating a sample game that implements OpenFeint, to give them a chance to understand what I talk about when I talk about their new operator hackery and resolve it. There are other libraries that have the same problem but OpenFeint is clearly one of the commonly "would like to integrate" 3rd party systems on the iphone.