|
My game Art of Deflection was released back in June 2009 and even though I do no marketing or exposure whatsoever now I still get about 2 sales a day, sometimes higher on the weekends. Overall I think I've made at least $700-800... unfortunately iTC Mobile (which is a fantastic app) only goes back 26 weeks so I don't have all of the numbers right in front of me. The first-day sales for releases and updates were lower than I expected, and there was a long time when I was getting no sales or maybe 1 or 2 a week but it's pretty steady lately. Steadily low, but steady. And from what I can tell, I haven't had any bad experience with pirated copies... Googling the game brings up a cracked version, and I tried to obfuscate my anti-piracy measures as much as possible, but I haven't seen any crazy amount of players on OpenFeint that would suggest a pirated version. I don't have a jailbroken device so I can't say for certain if my anti-piracy measures worked. If not, then I hope it at least kept the crackers busy.
|
# ¿ May 4, 2011 16:31 |
|
|
# ¿ Apr 30, 2024 02:18 |
|
skidooer posted:Edit: Turns out bad data was being copied to the device, but not the simulator. It wasn't the drawing routines at all. Though I am still curious if there are any OpenGL gotchas between the simulator and the actual device. Perhaps the best thing you can do is not assume any sort of OpenGL state coming into your drawing code... if you need something to be enabled, do it explicitly. Since changing OpenGL states can be expensive, you can put together your own set of flags for each OpenGL state you want to use, and keep track of state there, only calling OpenGL when something needs to be changed. Just reset all of our states to an initial value first to make sure your flags are jiving with what's in OpenGL. I have a cross-development framework I developed where I do the bulk of the work on Windows (Visual Studio is so nice compared to Xcode) and of the times I see differences in rendering between the device and my GeForce GS250 or whatever it is, I know that I'm not setting a state correctly. I'm still doing stuff with OpenGL ES 1.1 now, but I figure it's going to be more complex keeping things the same with 2.0 with the difference in shader capabilities and such.
|
# ¿ May 18, 2011 18:42 |
|
Yodzilla posted:... It seems to me that the SO article is setting a variable to the "self" object and then passing "self" as the delegate, so then the didFinishLoading method is just doing something to the variable owned by that delegate. It doesn't seem to be setting a variable to the connection object itself.
|
# ¿ Aug 10, 2012 15:05 |
|
Small White Dragon posted:I know it represents a shrinking portion of the market, but I'm kind of bummed that XCode 4.5 doesn't support armv6. I did some Googling and found this blog that describes a way to compile armv6 with 4.5. It basically involves copying the iOS 5.1 SDK from an older version of Xcode and fiddling with the build settings, like typing in certain things manually since Xcode doesn't have a dropdown selection for them. In these projects you can build armv6/7 instead of armv7/7s (there's no way to do armv6/7/7s) http://blog.chpwn.com/post/31824877081
|
# ¿ Sep 20, 2012 04:15 |
|
Does a 3.5" iPhone app appear stretched on the 4" screen or are there black bars, letterbox movie style? What would a game look like?
|
# ¿ Oct 8, 2012 21:24 |
|
I have an iOS app project that has a dependency on a static library project (this is Xcode 4.4). Everything compiles, links and deploys to a device just fine when I go from a clean build, but the problem I have is that if I want to make a change to one of the static library's sources (and not any of the app sources) and then run, it compiles but doesn't deploy to the device again. In order for my changes to deploy, I have go from a clean build. Is there some sort of build setting that I'm not seeing that would allow this to happen? I have "Skip Install" set to No for both the library and app (I do have it set to "Yes" for the app in my Distribution build though). My app project's linker flags are "-ObjC -l<static library>" If I can get this figured out, there'll be no more compile coffee breaks for me! Actually it's not terribly long it's just still a productivity bottleneck.
|
# ¿ Nov 14, 2012 15:52 |
|
Doc Block posted:You shouldn't have to manually add them in the linker flags. Add their xcode projects as dependencies, then go into your app target's build settings under the Build Phases tab, and add the libraries in the Link Phase. Holy crap you are a GENIUS! Edit: If I have a custom key in my Info.plist, is there any way to create a "human readable" version of the key like in the default set of keys? HiriseSoftware fucked around with this message at 05:25 on Nov 15, 2012 |
# ¿ Nov 15, 2012 03:58 |
|
Doc Block posted:The new iOS 6 autorotation methods don't get called if your app's deployment target is anything earlier than iOS 6. So really we don't have to worry about these new methods unless our app is iOS 6-only? Does the same go for the Game Center API changes? I spent a lot of trial-and-error time trying to get both of those working correctly for < 6 devices in my game framework, and I would hate to do that all over again. As long as I can support the iPhone 5 screen AND still only use the < 6 methods, I'd be happy.
|
# ¿ Jan 23, 2013 23:47 |
|
HaB posted:Is there some sort of Collection object in Obj-C that maintains insertion order? How about keeping an array of keys that match to the keys in your dictionary (e.g. you remove a key from the dictionary, you remove it from the array), and then just iterate over that array and pick out the objects from the dictionary that way? Doing some research, I think that is what http://www.cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html does.
|
# ¿ Mar 1, 2013 05:30 |
|
Toady posted:The Objective-C mailing list is arguing again, this time about replacing BOOL with C99 bool. Is there any way to do that which wouldn't break backwards compatibility? The answer is YES. Or, uh, maybe NO. It could also be true though. Or false.
|
# ¿ Mar 1, 2013 19:11 |
|
How would one illustrate a consumables purchase in a screenshot? Show a "Congratulations you bought 100,000 smurfberries, sucker!" or a before/after currency counter?
|
# ¿ Apr 22, 2013 14:41 |
|
Has anybody ever had any experiences with weird orientation rotation behavior when using presentViewController in 6.1? I'm making changes to my Game Center code to support 6.1 and the dashboards that come up show a strange rotation, like things are shifting into place and not rotating. This is when using the modalPresentationStyle=UIModalPresentationCurrentContext to show my game screen underneath when the transition occurs. If I use the default modalPresentationStyle, the background is black as Game Center moves into place, but the dashboard rotates just fine. Plus, I'm forced to do my own transition animation because using presentViewController with animated=YES actually DOESN'T animate it (dismissing it does animate though). Everything was working fine before 6.0. I do some custom things for rotating my game screen view (getting device orientation notifications, animating manually, etc) so I'm thinking maybe that's the culprit but I try Googling about this strange rotation behavior and of the two places I've seen it mentioned nobody can give a solution. I might end up creating a new view controller which doesn't do any custom rotation, attach a snapshot of my game to a view on that, set that as the root controller, and have Game Center present from that.
|
# ¿ Jun 19, 2013 21:41 |
|
Is there any way to render a UIRemoteView into a UIImage? Calling renderInContext on the local view doesn't make it show up.
|
# ¿ Jun 20, 2013 18:59 |
|
Here's a Stack Overflow answer about it that combines Xcode 4.4 and Xcode 4.5+ to build an executable that includes v6, v7, and v7s: http://stackoverflow.com/questions/12619124/how-to-support-both-armv6-and-armv7s-for-release-build-in-xcode-4-5 There's another answer elsewhere that has you copy the iOS 5.0 SDK from Xcode 4.4 to your Xcode 4.5+ and from there you can build v6 and v7 but not v7s, and you can't build against the 6.0 SDK. http://stackoverflow.com/questions/12463195/xcode-4-5-and-ios-4-2-1-incompatibility/13061562 I have tried neither myself, but that's a good place to start I think.
|
# ¿ Jun 21, 2013 14:48 |
|
lord funk posted:Since updating to Xcode Beta 5, I've been getting this log every time I scroll something (for every scroll increment, no less): There's a workaround to this at https://devforums.apple.com/thread/197966?start=0&tstart=0. Apparently a lot of people are having this problem. The workaround just quiets that particular message by hooking into fprintf but doesn't actually solve the issue. Edit: Stupid period in URL HiriseSoftware fucked around with this message at 02:00 on Aug 8, 2013 |
# ¿ Aug 7, 2013 20:31 |
|
Concerning iOS In-App Purchases, what's the best practices for dealing with receipt validation that fails because of some sort of network error, etc (i.e. if something was wrong on server side)? Should I not call finishTransaction: on the payment queue so that completeTransaction (and my verification) runs again? Should I store the receipt later and try to verify it again at some point in the future? At this point content hasn't been delivered, since I only want to do that unless I verify the receipt successfully. On this page http://zoooot.com/732/my-experiences-with-verifying-in-app-purchase-receipts the author doesn't store failed receipts and just says to the user "Try your purchase again later, you won't be charged again" but that doesn't make sense to me for something like consumables. I left comments on his post asking for clarification, but I wanted to know what you guys think?
|
# ¿ Aug 16, 2013 03:33 |
|
lord funk posted:I've forgotten how to get symbols back up in Instruments. Since updating to beta 5 I've been getting this: I just used this the other day: http://stackoverflow.com/questions/5268041/xcode-4-instruments-doesnt-show-source-lines Not sure if it'll work in Xcode 5, but hopefully it'll help.
|
# ¿ Aug 16, 2013 19:30 |
|
It sounds like you want GL_DST_COLOR, GL_ZERO to multiply the destination pixels by the mask pixels to darken the areas on the mask that are non-white. For that you don't need any alpha transparency in your mask (if I understand what you're trying to do anyway) Edit: I think this would have been appropriate for either the 3D Graphics thread or the Game Development thread, since it's OpenGL which of course doesn't have to be 3D. HiriseSoftware fucked around with this message at 18:43 on Aug 23, 2013 |
# ¿ Aug 23, 2013 18:38 |
|
LP0 ON FIRE posted:Thanks for your input. It's not working out right, partly because of how my Cocos2D is set up with transparency, and also I was thinking about this masking thing totally wrong. I thought you could just have one small square sprite placed on the screen and with some blending options make everything outside of it black and the white part show any sprites behind it. If you're trying to make the white sprite act as a "light source", if I understand correctly, I sent you a PM detailing a way to do it. Plus the way I typed things out originally might have been wrong anyway.
|
# ¿ Aug 26, 2013 17:50 |
|
Is there an easy way to compile in x86_64 for use in the iOS Simulator "iPhone Retina (4-inch 64-bit)" so that I could see how my code works on a 64-bit processor? I understand it's not guaranteed to be the same as having an actual iPhone 5S, but I was curious. If I select that 64-bit simulator and compile, it still goes to i386. Also, I have VFP and NEON assembly for doing matrix operations, should I expect that it won't work as is with 64-bit processors?
|
# ¿ Sep 26, 2013 17:10 |
|
iCloud in games question - How are people supporting virtual currency and things that can be bought with them (items, upgrades, etc)? I want to assume everything is key-value, and I'd imagine non-consumable bought items are easy because you're just setting a Boolean to true once it's bought on any device, but how are conflicts resolved in currency value (e.g. Smurfberries) and bought consumables (e.g. usable boosts)? Do developers just not bother with those?
|
# ¿ Oct 3, 2013 18:15 |
|
This "iCloud Keychain" thing, do I have to do anything differently when saving data using the keychain API to make it work with iCloud? Googling doesn't seem to be helping me answer that question. Edit: vvvvv No wonder I couldn't find anything. Thanks! HiriseSoftware fucked around with this message at 17:44 on Oct 23, 2013 |
# ¿ Oct 23, 2013 14:34 |
|
If I use iCloud key-value storage in my app (everything setup, entitlements, etc) but don't listen for the NSUbiquitousKeyValueStoreDidChangeExternallyNotification, would I ever get those notifications at a later time? I'm trying to figure out how games allow you to disable/enable iCloud from within the app itself - what exactly are they disabling? There's no "initialization" of iCloud in the code per se, you just start listening for notifications. If I disable the notification observer, then decide to enable it later, will I get any notifications that occurred during that time where it was disabled? Or should I keep listening for the notification and just put that changed data aside until the user wants to sync again?
|
# ¿ Oct 31, 2013 15:36 |
|
Ender.uNF posted:If you don't listen for the notifications they are gone. Use it or lose it. It sounds like I should do the last question I posed then - keep listening for notifications but put the incoming data into a staging area to do that "max check" with later. If I disabled syncing in-app and completed level 1 locally, but still received a "level 3 complete" from a notification (because I had syncing enabled on another device and completed level 3 there), I should keep the "level 3 complete" somewhere else and only check it against the local data when I re-enabled syncing. Should I still bother with URLForUbiquityContainerIdentifier (and whatever the similar thing is for 6.0) if I'm just using key-value storage, or is that more a document sync thing? Apple examples don't seem to care about it with regard to key-value.
|
# ¿ Oct 31, 2013 20:40 |
|
It seems to me that in the setCurrentRoomToValue method you need to copy the string to current_room with a new string object instead of just copying the pointers (or create a @property with "copy" and a custom get/set). Is this using ARC?
|
# ¿ Nov 18, 2013 17:40 |
|
Not sure if this would help anybody but I discovered an OpenGL ES mipmap generation bug for A7 devices (5S, etc). Apparently using the standard OpenGL calls to generate mipmaps with non-square textures is causing problems. I was wondering why my particle engine was spitting out particles that looked much different between my 5S and my 4... it was only in GLES 2.0 that this was a problem - 1.1 was fine. At first I thought it was shader precision (because there's a change in "lowp" for A7) and I was hashing the data going into glTexImage2D between the devices just to make sure the data was the same. There were fleeting moments that the particles looked correct so I turned off mipmapping and everything went back to normal. I googled for this and the only thing I found was a thread on TouchArcade that said someone had to fix a bug in their game because A7 mipmapping generation for non-square textures wasn't working:quote:Issue resolved. Obscure change in A7 64bit OpenGL ES implementation meant that any non-square texture could not get mipmaps generated with the normal OpenGL ES calls. Performing my own reduction solved the issue. Apple's documentation had nothing about this issue.
|
# ¿ Feb 24, 2014 04:55 |
|
kitten smoothie posted:I have no idea, for instance, if you'd be able to debug on a device through whatever USB bridging done by a VM. You can in fact debug on a device connected by USB through VMWare. But yes, it will be lovely.
|
# ¿ Apr 4, 2014 15:27 |
|
Edit: Wrong thread!
HiriseSoftware fucked around with this message at 06:27 on Jun 2, 2014 |
# ¿ Jun 2, 2014 06:20 |
|
Call glGetError() after every gl* call and see if it's failing anywhere on your working and your non-working devices. I use this macro:code:
Once I got my 5S, my applications were acting funny so I had to check GL errors to see what was happening, I can't for the life of me remember what my fix was though. It might have been about unbinding array buffers at the end of each frame or something - something to do with resetting a binding back to 0.
|
# ¿ Aug 20, 2014 19:41 |
|
Man gently caress this orientation-dependent bullshit on iOS 8. My view code for my educational game works just fine on < 8, but of course totally breaks on 8. My app is landscape, and I figured out how to get things to display correctly, but I have a problem with touches - with I get a TouchPhaseBegan touch, the touch coordinate is not correct - it's like the bounds of the view for the touches is rotated and the touch coordinates are on the border of the "view". Then when I get other events for the same touch, the touch coordinates are correct! I'm not sure kind of information it's using and what's changing between the Began phase and the others, but it's driving me nuts. I tried using "self" in locationInView, "nil", and a bunch of others, but nothing works. Edit: VVVV It's my own engine but I just can't figure out why it's giving me wrong coordinates at the start of the touch but they're fine afterwards. I don't think I'm making any view changes between the two events. I was hoping it was a bug in the simulator when I first experienced it but I just updated my 5S and it's doing the same thing. HiriseSoftware fucked around with this message at 03:32 on Oct 13, 2014 |
# ¿ Oct 13, 2014 03:11 |
|
lord funk posted:Don't use nil anymore for locationInView. iOS 8 changed the way the window bounds are calculated, so always do it in the view that fits your expected coordinates. Oh believe me I've tried a bunch of things to pass into locationInView, but nothing seems to be working. I even created a standalone view to just receive touches (as opposed to the GL view), but that doesn't work either. Here's some of my debug output (with comments): code:
HiriseSoftware fucked around with this message at 15:12 on Oct 13, 2014 |
# ¿ Oct 13, 2014 15:06 |
|
Doc Block posted:How exactly are you detecting the touches? Something other than -touchesBegan... etc. ? Also, the fact that it's reporting your view as being 320x568 instead of 568x320 might be part of your problem. No, I use touchesBegan. I'm starting to rethink all of my view/orientation code for iOS8 and start from scratch because what I was doing for pre-8 was kinda hacky and lot of trial and error (mostly because I just didn't understand it) but it worked great. There's probably something fundamentally wrong with what I'm doing with regards to 8, it's just weird that it reports a wrong touch location and THEN the correct one, even seemingly with the width/height in the wrong place. In addition to this problem I discovered issues with modal views appearing correctly (e.g. Game Center dashboards) so I think starting over will be best. Thanks for the help though! I'll take a look at your test when I have a moment.
|
# ¿ Oct 13, 2014 23:12 |
|
I resolved my issue(s). Like I said, I basically threw out all the hacky stuff that I did for <= 7.0 and let iOS take care of lot of orientation handling and it's been working well. I'll still keep the <= 7.0 stuff for legacy though, just because it already works.
|
# ¿ Oct 14, 2014 18:13 |
|
HaB posted:This. So Much This. poo poo, I thought Xcode debugging issues was just something that was wrong with my setup and didn't know that it was an epidemic. I'm like "eh, I can't see what's in this NSDictionary, but it's probably something I'm doing wrong" but I guess not. Visual Studio's STL compile error messages are so incredibly cryptic, but the fact that the debugger lets me see everything in the containers is more than enough consolation.
|
# ¿ Oct 20, 2014 15:08 |
|
Please clarify for my own sanity regarding iTunes Connect and screenshots - I'm using Safari on OSX, and the order that I'm uploading them is the REVERSE of how they would appear on the store, correct? Each next upload is placed to the left of the previous screens, so it makes sense to me that I'd have to rearrange them manually to how I'd want them to look. Googling is not entirely clear on this.
|
# ¿ Dec 12, 2014 17:49 |
|
|
# ¿ Apr 30, 2024 02:18 |
|
Is there any way to detect if there are "too many" touches on the device? I know that the iPhone supports 5 touches and the iPad has 11. I've got a soon-to-be-released kids app and of course my 3-year old finds a bug when he puts too many fingers on the screen. For example, on the iPhone, if I put 5 fingers on the screen at once, I get a bunch of e.g. touchesBegan events. If I keep those fingers down and put down one more, I get no events at all (not even touchesCancelled). I've been looking at functionality of some games and I see that they somehow detect that there's been a 6th touch and do things like reset "button is pressed" states, which would be perfect. If there's some other notification or event that I need, I can't seem to find it. Edit: Ok well it seems that I spelled it "touchesCanceled" and not "touchesCancelled" in the code so that's probably what's going on. Doh! HiriseSoftware fucked around with this message at 05:56 on Dec 15, 2014 |
# ¿ Dec 15, 2014 05:36 |