Archspace no longer! Archverse forever!

Posted by HippieHunter Sat, 08 Sep 2007 19:21:00 GMT

 Well AS is dead, it official died a few days ago and will likely never be revived. However Archverse is trying really hard to be born. For those interested in the Architecture I finally settled on a C++ Core with a PHP front end. The C++ Core just sits around updating the game while the PHP uses XML-RPC to ask for Data and Update things. Its a fairly efficient system and I should be able to make the C++ pretty crash resistant since its only got the one client to worry about. A nice added benefit is that I don't have to worry about security or validating things in C++ because such hassles are handled by the front end and not the back. 

 
Archverse Forums are also now up for those who want to go spam and troll, located at www.archverse.com/mybb .net and .org. Should make for some good times, let all your AS friends know AV is gonna come kick some ass. 

Archspace Again

Posted by HippieHunter Thu, 10 May 2007 13:11:00 GMT

 Well I Need to do work on Archspace again, the game seems to be loosing entirely to many players recently to the point that we almost only have hard core vets left. Something like 80-90 players, I'm not really sure. But suffice it to say that this game that has at its peak have somewhere in the 10k range really needs reviving. Not sure what I can really do code wise to bring it back to life most of the damage to the game seems to be from the player base themselves. Vets constantly pick on new players but such is the life in web strategy games. Maybe Archspace will die, but I hope we can at least get Archspace 2 up and going before then. Maybe we need to find a different name when we come out with the next one so we don't get any bad publicity. Well I need to go to sleep so I can wake up early in the morning.


Programming languages

Posted by HippieHunter Fri, 16 Feb 2007 05:11:00 GMT

 As it turns out I really like the idea of languages other than C++, such as LISP or ML its just that when I see the syntax I want to rip my eyes out and throw them in an incinerator. Im sure they are great languages and LISP apparently even preforms as well as C++ but I just cant live with out C++. I guess I'm stuck with it, at the ripe old age of 20 and I'm to old to learn a new language. Well not totally true, I program in C# at work and I guess I do technically know DBL but I don't do anything in DBL and C# is practically just C--, so I'm right at home with it.

 
This brings me to the reason I've been looking at other languages, Archspace scripting for AI. Its a really fantastic idea in theory but the problems of choosing the best tool for the job get a little hairy. So I will just throw out the line up, First up there is LISP. LISP is historically useful in this area, I have no idea why but it has been tied to AI research since the idea of such things came into being. Second up we have AngelScript, Its like C++ only with no pointers. The pros; Easy binding to C++, decent performance, C++ syntax. The cons; I don't actually know anyone with direct experience in the language. Then we have Lua, its small, has decent performance and is easily embedded into something made in C++. But Lua is so god damn horrible to look at, not a ; or {} in sight, As a c++ programmer I rely on those to tell me important information. I will also mention Squirrel, its another C like Scripting language but its typeless like Lua so if it were me, and I was into the whole typeless thing I would be in there like swim ware. But I have really mixed feelings about typeless languages like that, JavaScript has left me with a bad taste in my mouth. 
 
As a side note, no one ever reads my F'ing blog so ive shamelessly plugged myself on the Archspace Forums. I have no idea if it will do me any good.

Archspace 2

Posted by HippieHunter Thu, 15 Feb 2007 04:01:00 GMT

 Ive yet again picked up working on Archspace 2, this must be the 100th time. Each time I come back to it though I look at the design and tweak it a little, eventually I might actually get the one I want. Hopefully when I do its crazy awesome good. Just a little overview for those of you who care, Ive taken a loosely coupled approach to design. Pretty much everything is an entity and entity's can contain other entity's, of course. That was design round one, in round two I realized that I would have to do a little more then just basic updates of entity's in their own self contained worlds but it would be horribly hard to do so looking through the entity's children for all the info. So I decided to keep the children and add some members that were really just pointers to the children but with type info associated. At this point I have the architecture to update anything in the game using implementations of a visitor and in that update I can actualy do something with the info contained. 

 
Now in one of my more recent re-workings I've decided to make the generation of XML more explicit. Before now I was just sending in a stream, filling it with data and sending it on its marry way to the client. Now the system explicitly uses the XML DOM provided by Poco and then as the last step it pushes it out to a stream. If there was one thing I learned about doing HTML output in C++ it was that C++ and escaped chars everywhere are not the most fun thing in the world. Through this I'm really hoping that there will be very few constant strings actually in the code, with everything in the XSLT or contained in some sort of text lookup for purposes of multi language support.
 
For my next feat of awesome I intend to come up with a heavily programmable battle system, where the users can actually program the AI that controls their ships but still have some decent premade options available. I'm guessing I will have to support multiple scripting languages to make things fair, since I would choose something like AngelScript or Pike long before I used Lua, Python or Ruby. But those languages are much more popular so life would be better if I allow a bunch of them. I don't think i would want to integrate perl though since it would probably not be very safe. 

Boost is fun

Posted by HippieHunter Tue, 23 Jan 2007 04:43:00 GMT

 Lately I've been working on the next version of Archspace. While I knew about a lot of the great things in boost I had never really used them in practice. Well I've found my new digital best friend, Boost Lambda Library. Its just so damn cool though I should say that it wouldn't be nearly as cool without Boost Bind along with it.

 
The design of Archverse demands that it very heavily use containers, iterators and patterns. Without Boost Lambda doing these things are really kinda tedious and grow unwieldy with time. Lambda lets me write functors right where they need to be used instead of adding a new header file and making another cpp file for just one tiny little class with one tiny little function. Functors are one of the nicest parts about C++ now I can use them all over the place without wasting time writting full blown function objects.

Templates vs Generics

Posted by HippieHunter Mon, 15 Jan 2007 06:31:00 GMT

Recently I've become painfully aware of the shortcomings of generics. The greatest strength of templates, in my opinion, is their Turing completeness. Generics have been designed with the idea that generic programming should be easy, but not powerful. Templates are designed off the idea that Generic programming should be left to advanced programmers, but should be able to do anything you could ever want to. 

 

This brings me to the point of this blog post. Generics are worthless when placed next to the functionality of templates. For example the concept of mix-ins from C++ aren't even possible in C#. Some would argue that this is a small price to pay for simplicity, but I argue that Generics make life easier for people who want to write worthless incomplete librarys that dont cleanly represent concepts, while making life harder for the programmers that have to live in such a world. Templates make life better for the end programmer and all they ask in return is for the library writers to know what they're doing. I also would like to point out that constraints are also the dumbest idea ever, they might make a wishlist for academia but in reality they severely hinder generics usage. 

 

This brings us back to why templates are better. Templates have all the functionality from the thing they were replacing, namely macros. In terms of getting the job done, macros are great. Sure macros are terrible to maintain and debug but they are just so darn useful. Thats why templates were created to remove those two problems but not loose any functionality. So in short templates are gods gift to programmers and generics are a contribution from somewhere south of there. 


Management of Software Creation

Posted by HippieHunter Mon, 08 Jan 2007 16:37:00 GMT

 Ive come up with a theory, in this modern world of instant gratification I belive software companies have decided to apply a greedy algorithm to the Traveling Salesperson Problem of software design and creation. Now that may not make much sense so I will further explain myself. In this particular case the Greedy Algorithm is taking form in the 1 month goal sheet and performance evaluation. When you force people into short deadlines and then base their advancement in a company off of the metting of these short deadlines people take as many shortcuts as they can. Not only is the actual code poorly designed and hard to maintain or extend but it probly also runs like shit. 

 
Now that we have all this poorly thought out code lying around lets throw in some churn and at a certain large software company such churn is almost everyone on a project is new every 6 months to a year. With this added variable we get to see people now incorrectly using badly written non performant code that probably has difficult to find and horribly terrible bugs. In short looking to the long term in software design is a good idea, but none of the large company's really do that right now.