While a release hasn't come out recently, I've been working quite a bit on this project. The biggest change is the Core Data model. Simply put, I was doing it wrong.Best way to explain it? I always the process of building a house as an analogy to programming. If you build it on sand, it works. After all, you only need one floor, right? You make a few workarounds to get it to work. And great, you got a nice, working single-floor house. Now, lets say you want to add an addition? Or better yet, another floor? In the case of my app, if you wanted to add a skill planner? So you add the second floor and the house start sinking. Now, you need to find a way to add another door to be able to get into the house. So you build that. Your plumbing into the house gets bent out of shape, so you jury-rig them to get it to work. However, things just don't work right and the amount of work it takes to fix it is becoming far too expensive, not to mention neither worthwhile or fun. Now, you want to add a 3rd floor, i.e. a ship builder. I'm sure you get the hang of what I'm saying.
In relationship to how my program was structured, my model was built in such a way that made it difficult to build on top it. Specifically, there are a defined number of skills in the game but I'm guessing 99.9% of EVE players don't have all of them. At the time I figured it would best to have a character have a limited number of skills equal tied to them equal to the number learned, possibly for speed and efficiency. The fewer the objects, the smoother the program will run, right?
It turns out that, first, I've underestimated Core Data's speed. Worse, though, is that not having a one to one mapping relationship of every skill to a character's learned skill is what's really crippling me. What it ended up doing was, for example, if you wanted to add a add a skill to a skill planner that you haven't learned yet at all, the program is forced to add a different internally to the planner. Then, when the program is doing calculations, its being forced to do a lot of type checking. Is it a learned skill? Or is it a skill at a level not learned yet? The sheer fact that the app is doing type-checking in the first place means the app is doing something wrong and is violating basic object-oriented programming principles.
So, back to where I'm at. I've got the skill tree and character data importing done. Speaking of which, I switched from tree-based parsing to stream-based and I've gotten about 4x boost in speed. Currently I'm getting the skill queue to work (work correctly, that is). The current skills outline view is working.
Wish me luck. Signing out.

i made a comment about it on the eveonline forum, but just to say it here as well - really like the new look of the app and glad to hear that you're working on it again. looking forward to seeing how it turns out.
ReplyDeleteregarding donations, i've not got much ISK to spare, but I'll send some over - which character should we wire it to?
Thanks for the support.
ReplyDeleteI'd prefer Mizuki Yori.
Thanks for the donation :)