Thursday, February 28, 2008

New Server, Optimizations

So we got a new server at work to run my ETL program on.  It's a HP blade with two duel core AMD Opterons and 10GB of ram.  We installed Windows Server 2008 on it and a version of Visual Studio Team Suite so now I have some useful profiling tools.  I found out my program spends 10% of its time on the ToLower() string command.  Our CRM system is weird with strings and *sometimes* returns attribute types with capitals and *sometimes* does gives them all in lowercase depending on where you get them from.  The problem ended up being in this function, which was a pretty big bottleneck:

public static string getAttributeType(string entity, string attribute)
{

    foreach (CRMAttribute attrib in attributes)
    {
        if (attrib.entityName.ToLower() == entity.ToLower()
            && attrib.attribute.ToLower() == attribute.ToLower())
        {
            return attrib.type;
        }
    }
}

I hadn't realized it would be called so much, so I replaced it with a hash lookup and now it goes much faster.  I always liked how profiling tools show you such unexpected results when you get into a project of this magnitude.

The other bottleneck is threads waiting on other threads... I'm not sure what I can do about this but I'm going to be investigating.  There isn't too much time I have to be working on optimizations because the majority of the program is it spending all of its time publishing to the CRM webservice which we can't speed up.

Wednesday, January 9, 2008

Advisor Scheduler

ExchangeLogo_2So I've been assigned at work to write an advisor scheduling program.  It has to interact with Exchange 2007 mailboxes which is going to be the real trick of completing it.  I've written one before but it was buggy and used WebDAV services to interact with Exchange Server 2003 which didn't work on our multiple domain system.  I'm really looking forward to getting to use the new Exchange Server 2007 web services which should be a lot easier than hacking up everything with WevDAV.  The key here is going to be a very simple user interface for both the advisors and the students.  I also want to make it customizable because my previous version caught the attention of other departments across campus and I'm going to keep in mind portability while writing this.

One of the purposes of this blog is to provide some technical information for reference for myself and others.  There have been countless times I have searched for information and found answers on blogs, I can only hope that this blog can return some of that help to others.

Monday, January 7, 2008

the next step

So we've released Electropy.  Our sales have been doing fairly decent for our first game.  We need to work on getting the word out and spreading the download link to the demo.  Unfortunately we did not make the IGF finalists so we will not be attending GDC.  While we were certainly upset by this, we quickly recovered and started talking about our next game.  We are expanding out and making a plot driven game that will be much more marketable.  We have learned from Electropy an immense amount and are all extremely proud to have taken the first step with our first game and consider it a massive success.

I've been working on the idea behind our next game for quite some time, so it already has about two years of thought into it.  Now that it has been introduced to the rest of the team there are so many great ideas and it reminds me why I am so lucky to be on such a talented team.

Our lead artist, Brian Powers, made these renders you can check out, they simply look amazing and give a hint of the atmosphere we are going for in our next game.

n508725697_374064_4323 n508725697_374139_8269

It's going to be very enjoyable because I am much more involved in the design and coding process behind this game.  I'm hoping we can release it in eight months so stay tuned.

http://www.cortech9.com

Sunday, December 16, 2007

release

So we have released Electropy for sale. We are staying a bit quiet about it till we get a few more things kinked out but will start announcements later today (its 2:43 AM). We actually had the game for sale since yesterday but we were testing out the store.

I've rewritten the entire scores database so I've got some rewriting of the website to do, I have most of it done but the high scores list isn't displaying the best times for each level yet, you have to go to the level specifically.

Things have been going pretty darn crazy around here... either working on the game or working on figuring out how to get a company started, not to mention we are all in school and have finals going on right now. 3 of us have jobs so as you can imagine we are awfully busy! My days consist of waking up, going to work, going to work(at my second job) coming home, doing any school work and then working on Team Phobic stuff until roughly 4AM, then waking up the next morning and repeat. It's pretty hectic but it is pretty fun, I can't wait till we start making some money so I can lower my hours on the jobs and start making games. We already started planning our next project and we got so exciting just talking about it, it is so great to have something we can all be so excited about doing.

IGF student finalists are announced tomorrow. I'm so excited, but also worried. If we don't make it then I'm going to be very disappointed. We are a bit worried about the judging criteria they will use. It would be so amazing for us to get to go to GDC, it would be such a huge step for us to take, not that we aren't already racing up the stairs.

If anyone out there is interested in writing a review for Electropy we would be more than happy to provide a copy of the game if the site is well established, just e-mail contact@teamphobic.com

Other than that, head over to electropy.com and buy the game! :-) we are gonna stay away from the high scores so other people have a chance so nows the time to get the #1 score! I just played through Gosu difficulty with only using 11 continues and I'm very happy with that... this game can get hard but it is oodles of fun.

Sunday, November 18, 2007

Busy Busy Busy... and Sick!

Okay, so we finished our first release candidate and sent it off to publishers and distributors. Wish us luck!

We made the mistake of deleting the beta files off the server, we had the mac one back up pretty quickly but I'm getting the windows one back now.

I haven't been able to work on the site as much as I was hoping, unfortunately. I got another job and have been really sick lately so I've had no time whatsoever. I really want to get some forums going so we can see if we can develop any sort of community which is what this game will do well with, I think. Plus it will help a ton once we start selling the game to have a place for support.

Can't wait till they release the IGF winners, I think the date is december 18th for student entrants... it's very exciting, I've tried search around google to see which games are getting their name out there and I've seen Electropy a few places. So spread the word, cause we appreciate it! :-D

Saturday, November 10, 2007

speed improvements

Okay, so the website scores were quite slow. They are faster now! I started storing the high score along with the level so it doesn't have to do a query every time. The only disadvantage of this is it has to compare the high score with the current high score every time you submit. So now I ran through all the Noob and Tutorial levels to test it out. Unfortunately since all the older scores weren't submitted with the new update, they won't be listed(although they are listed in the actual scores for the level). Since I will be clearing the scores eventually, it really isn't a big deal.

Well, hope the site works faster for you, it still takes a second or two to load all the levels but it is a lot of data, and there won't be any problem with scaling because it is only dependent on the level count.

Sunday, November 4, 2007

One Week

Alrighty... we have one week till we are locking content and building release candidate one. It's a lot of fun, and a lot of work, especialy while working and taking classes. I'm really greatful I get to work with such a great team we have. We got some cool music added to the game with the addition of a new member to our team and it sounds great!

The online profiles we got working, its really fun stuff. When we have the next beta out you will be able to log into the game with your teamphobic.net account, as well as create one from inside the game. I think we have a pretty neat authentication system set up and I have it running in some of the background sites you can't really see, but soon you'll be able to log in to Electropy.com.

I've been playing some of the IGF games when I have the time. I really liked the booger game, haha, Gesudenheit I think it is called and Mayham Intergalactic was a lot of fun. I'm pretty confident Electropy will be in the top 12, I only wish we had the online profiles in the build we sent to IGF. It needs a lot of internal testing right now just to protect us from 1337 h4x0rs, err, I mean script kiddies with nothing better to do, haha.

I had to make a pretty major change to the site. I was pumping all data access through a web service because the database is only accessable from localhost, which makes it very difficult for me to test/develop on so I made this web service. Well, it was good at first, but not secure, and a bit slow for real operations so I took it done and that messed up the account creation. I've fixed the account creation, but I'm angry it took me as long as it did for me to notice. I'm trying really hard to build a robust and scable backend system that we can keep for a long time, it's a great learning process and pretty freaking crazy. I'm a little rushed at times because we need a lot of functionality to have the Electropy Scores and Profiles set up, but now that its there I can expand and tweak up what I've been doing. The website is a lot slower than it should... I'm calling too many external functions and too many SQL queries for the high scores. The most important part was getting it to work.

Next I'm going to be working on some FORUMS. We really want EVERYTHING to be built in house by Team Phobic, so having our own forums is no exception. They should be a lot of fun to write, and these will be the third forums I have written, and third time is the charm, right? My whole DB system is WAYYY different than anything I've ever made before, I got a lot of ideas from Microsoft CRM simply because thats what I have to use at work... and it has soooo many problems! I took the ideas and concepts I liked out of what they did and expanded and generalized it to what I wanted to do, and removed the problmes :-D Something I call "Impresario". I'll get around to posting more about how it works later.

Well, it's late... thanks for reading, go play some Electropy!