Thursday, March 10, 2011

Running a little late

I am growing increasingly frustrated with Monodevelop. From random crashes with no warning, to a debugger that only says "evaluating" on variables indefinitely, to some of the recent problems I've been having. I was hoping to have shops ready two or three days ago, and they are indeed mostly done - all I should have to do is put in code for picking up and dropping items while in a shop.

But, I've never been able to get to a shop. Early on, in the first two or three days, I figured "Hmm, I should refine creatures so they aren't so complicated to work with before I go doing something like shop interaction." So I did, and started going line by line and revising my code. Well, in doing so, I broke some things - one of the first things I did was change how status effects work. Instead of every single creature tracking every single status that could affect them, whether they had it and how much time was left on it... I made a "Status" class and had creatures have a list of statuses, which most of the time would be empty and hence take up near nil processing or memory.

That broke just about everything that used the old system. So I went through and fixed it up. Well, plenty of things still kept giving errors. Problem was - it was hard to tell why anything was causing an error, because Monodevelop seems to decide at random whether to show you what's in a variable or not. So I would just try different things until it worked. Which is what ate up most of the rest of the time. I also got shops theoretically generating in villages.

Just recently I got it compiling and running again. I'd broken the draw code as well, a mixed problem of changing how statuses work and condensing draw info into a GfxTile object. Just now got that fixed, as well as (I think) everything I broke with Vector2's while circumventing a stupid problem to do with reference types and structs. But now at present I'm having an utterly RAEG inducing fight trying to figure out what's causing a "stack overflow in an unmanaged context", which really means I just have an endless loop somewhere, but Monodevelop's lost track of what called it in the first place.

I've also got a ton of other stuff I'm doing. I've got web classes, which are looking to be really time-consuming this semester with 3D model making, texture making, simulation programming, and more. I'm wanting to program an operating system in C# using something called Cosmo. I'm wanting to make a text parser/chatterbot called LEGION. And I have another secret project that I've been toying around with. Not to mention I'm moving (if the house deal will ever close), and designing a room that will be built from scratch to be a recreation room with a pool table.

So, I'm sorry for the slow going, but I really am quite busy, and Adventurer is just one of many things I am interested in getting done. I can't spend ^all^ my time chasing cryptic error messages and punching the messengers until they do what I need them to. Depending on how difficult this most recent batch of problems could be, Adventurer could be out tonight, or it could be out next week.

Monday, February 28, 2011

Adventurer 0.0.2.8 - Gold

Well, I'm not living up to my 7 day promise very well, am I? And yet again, I hoped to have more stuff done. I've been playing around with Blender and the new Dwarf Fortress release a little too much. I also learned enough openGL to import and display a .obj file in 3D. But that's not important. What is important is that I got gold working, so you have another way of evaluating your progress through the dungeon. Monsters have a chance of dropping it, you can pick it up, and try to accumulate as much as possible. It works with the save files and everything.

I also got a lot of the background work for shops in: I have classes for shops and shopkeepers, methods for handling some shop related stuff, all that good stuff. I just hadn't got to actually putting the shops into the game, and that was the next thing I was going to work on. But then I realized not only would shops have to work, but I'd have to add values for every item in the game. I also realized "Holy chronology Batman! It's been 10 days", and that I should just put out what I have.

So unfortunately shops didn't make it in this update. But, they should very well be in for the next update, which shouldn't take too long because of all the background work I've got in place for them.

Friday, February 18, 2011

Adventurer 0.0.2.7 - Amulets



<_< I got a little sidetracked this week. I was learning Blender, so I could make 3D models, so I would have something to put into a program or game when I try to learn openGL, so I can do 3D stuff. After messing around in blender and following along some tutorials and guides (I recommend the wikibook called something: Noob to Pro), the above model came out. Now I'm learning stuff like UV mapping so I can color the thing, and openGL so I can use it in a program. Anyway, that's pretty unrelated from Adventurer, other than that it ate up two or three days, with class eating up another, along with house hunting taking up like another three. And yet I still made some time for Adventurer. As the title tells you, I got amulets working.

I didn't test them a whole bunch. But when I died wearing an amulet of life saving, I came back. If there's any bugs (and there probably are due to lack of much testing), I'll catch them as I go. So, assuming next week isn't too full of business or Blender or openGL study and practice, I'll try to continue the pattern of getting another class of things working. Possibly wands or magic or shops.

Wednesday, February 9, 2011

Adventurer 0.0.2.6 - Potions and Internal Stuff

I am so sorry for making you all wait this long. It's been like twenty days since the last update. I am also sad to mention that most of the new stuff I did will be rather non-obvious. That's because like 90% of what I did is internal rewrites of code that I made back when I was just starting this project. I've obviously gotten quite a bit of experience in the past few months, that I just plain didn't have then. So my old code was a nightmare to work with. So I rewrote most of it. That's what's been taking so long. I should be able to do new stuff faster from now on, though. So, I couldn't have an update made of nothing new for the player. So I had to make something new for the player. Namely, a bunch of new potions. Not just healing potions anymore. I also started to add a bunch of amulets, but writing the code for wearing them and having long-lasting intrinsic buffs would take even longer. So I finished this up and released it. There's also another reason this took a little longer than normal.

Stomach virus. I was feeling it coming on one night. Next, I was utterly bedridden. I literally slept all day after a bit of morning chaos. The next day wasn't much better. I was a little more wakeful, but I sure didn't want to be awake for that crippling headache. I laid and did nothing. Next day was starting to get better. Still a headache threatening, but it was easing off. Didn't want to aggravate it with a bunch of programming. Then, I finally started feeling better. Tip for you all - never interact with anyone who interacts with people if you're trying to finish something important.

So, I expect this update to be buggy as a cheap motel. (Huh, unexpected double point there - bug as in insects and bug as in spying.) I rewrote a lot. Like, pretty much everything, I chopped apart and stuck back together. The last two days were debugging to get the thing working again. At first it didn't compile at all, then it did but crashed on the first step, then it crashed randomly, then the inventory menu was borked... Finally, I didn't notice many immediate problems. Doors are still a bit weird visually with the way they open. Breaking down potions is being a little weird too, acting like the whole thing is water. And I have no idea how much I broke in the save and load area. Seemed okay at the time.

Next week, I'm going to work on anything I may have broken with this update, as well as get money and shops working. Or perhaps I'll get those amulets working. And this time, I really do mean next week - barring something like power outage, I'm going to keep that promise of four fast updates.

Wednesday, February 2, 2011

End of Month 8 - January

I've got good news and bad news. The bad news is, I am skipping the update that should have been done a couple days ago. The good news is, I have been far from lazy. I have been doing very severe, major internal rewrites. I am rewriting what must be over half my code. The short version: the only programmer worse than present me is past me. The long version...

I started to work on items. Then I found the programming advisor Gendarme and used it. In using it, I found out a ton of things I haven't been doing. Like default parameters. Or proper use of methods to make sure I don't repeat code. I've also been coding things in ways that made sense at the time, but don't now that I have a little experience with the kinds of systems I want to be using. And have a much vaster repertoire of code commands at my disposal. This is probably nonsense unless you're a programmer. Let me put it this way...

The file size should be smaller. The external file loading should be much more forgiving. The game may run faster. There should be less obscure bugs, and they'll be easier to fix. I'll be able to put in new things much faster.

So, expect the new version in a matter of a couple of days. No more than two weeks since the last release. I'd rather release something stable, than break what I've been doing in order to rush a version out the door. I'd rather code well than code fast here. The good news is, once this is over with, I won't be breaking my stuff every time I add a feature. Which means less time working on things, which means faster releases and more stuff per release. Just put up with the slowness for a little longer while I refine things.

Marginally related to Adventurer, I've been learning a lot of 3D physics in my Math for Game Programming 2 class at DeVry. I also downloaded Blender, the 3D modeling program. After I get this version of Adventurer done, I'm going to start a bit of a side project, making a 2D and 3D physics engine for myself. I may make a physics based puzzle game, in order to help with the implementation, and to test my Blender models in a game. Think Portal, or the Gravity Gun in Half Life 2. Just with horrible, possibly wireframe graphics. I don't know whether that will amount to anything, but if it does, I'll let you know. It won't get in the way of Adventurer, though.

Okay, so this month's data. The ads are doing good. $9.20 last I checked, and I got a postcard from Google to establish that they've got my info right. So thank you everyone for caring enough to check in on the blog. What about pageviews, then? Fluuuush, down the drain on pageviews. -19% on the blog and -28% on the code page. But, I know why. A combination of regular graph noise being on the low end this month, combined with a slow release earlier in the month along with the current slow release. Don't worry, I'll do better next month when I get this thing done. I hereby solemnly vow that the next four updates, after the upcoming one, will be within seven days of each other. And will all be something fun. I know I'm going to regret that.

Monday, January 24, 2011

Adjusting to MonoDevelop

I was thinking that I should add some more posts between the main game-update posts, particularly if they might be useful to others out there. Well, I think this might be one of those. Last week, I switched to Ubuntu and MonoDevelop. MonoDevelop is to any platform what Visual Studio is to Windows. Overall, it's very similar and I'm getting along pretty well with it. But then I hit a problem of the sort I've encountered before - something I've done is causing every creature except to player to hit with a damage of 1. My normal process is to run up to a point where creatures exist, pause, and check what's in currentLevel.creatureList, which is of type List, and holds all the creatures in the level.

So I do that in Mono. I set a breakpoint, and stop it in a good spot to check what's going on with creatures. I hover over "currentLevel", that comes up with some info on the level, and a plus sign. I hit the plus sign, and expand it open. In there is a lot of information about the level - including creatureList. There's a plus next to it, so I push it to expand and... nothing. The plus just disappears, nothing changes. I use Expression Evaluator on it - "Expression not supported". So apparently the MonoDevelop version I have doesn't handle Lists too well. I did, however, learn that I'm a little old on the version I have, and that newer versions have done some work on debugging and tools, even specifically mentioning that the "Expression not supported" shouldn't be appearing anymore. So I'm updating to the new version at the moment, where hopefully I'll be able to check what's in a List.

I also learned about this program called Gendarme. Apparently, it can analyze a .NET/Mono program and help ensure you're following best practices, by pointing out common inefficiencies and usually poor practices. Of course, you're free to disregard any of the advice it gives. But I think it is a good second opinion that I'll be running through my code once it gets downloaded.

Overall, I'm focusing my efforts elsewhere while that all downloads. I'm adding items to the item library, and updating the code that loads in items. I'll be adding in new capabilities, new branches of code logic to handle all the new effects and quirks the new items are bringing in. I probably won't finish all of their special abilities in one go - I'm focusing more on just getting them in. But I will get all of them, and I will try to get as many specials in for the items as possible. I'm also building on and refining things like the material system; when I work more on things like crafting, magic, chemistry, and physics arcs, it will become quite important. Things like letting acidic creatures corrode iron items, or having things rust over time, or self-perpetuating fire reactions. Making innovative things like chlorine gas traps - which would of course interact with the H2O part of most living things, turning into an acid coating. But for now, just improving on the bare bones items that were in before.

Friday, January 21, 2011

Adventurer 0.0.2.5 - Cross-Platform with Mono

At long, long last, I can honestly call Adventurer cross-platform. It definitely runs on Windows and Ubuntu (Linux), and should run on Macintosh. Someone tell me if it does, if you've got a Mac. So if you've been following me the past week, I got almost nothing done with items. I did, however, go through a major operating system shift that took up most of my time. I am now primarily a Ubuntu user. Yay! I like it.

I am now using MonoDevelop to work on Adventurer, rather than Visual Studio. It seems largely the same, and it shouldn't be much of a leap for me. It also helps ensure that anything I do will be compatible with Mono, and so Adventurer should remain from now on fully cross-platform. Realize that I'm still doing this in C#: I've had a lot of debate in my web classes (which primarily use C++) about whether C++ or C# is better. While C++ has been around longer, I've found that I can get to anything C++ can do whenever I like, but usual programming is much more intuitive and faster. The main complaint is that C# isn't cross-platform. To that I say: Look at this right here. You may not have believed me, but right here is proof. I have run a C# program on something other than Windows.

Okay, so I didn't get much done with items. Like, frankly anything. Well, I got sidetracked on last week's bit of awesomeness. By the time I finished, it was already seven days, and time for an update. So here you all are. Windows users are going to be a little disappointed, but Linux and Mac users should at long last be able to play this thing without having to go to extreme emulation measures.

Next week will be back to work on items and other ideas I've had building up. Also an interesting note: It is 1/21/11 as of me posting this. Next week exactly, 1/28, is my birthday. I'll be 20. Wow, that feels really major when I write it like that. So what do I want? Well, I'm hoping that I would get a donation. Any donation. I've been working on Adventurer for several months, and I have almost $7 built up from ads. And if you aren't able or feeling up to giving me a monetary vote of confidence, then how about a textual one? Comment, tell me what you think, offer constructive criticism and suggestions. You may not think it, but seeing a new comment in my inbox really does lift my spirits.