Showing posts with label code. Show all posts
Showing posts with label code. Show all posts

Tuesday, February 19, 2019

Why PVP based Multi-Player Online Roleplaying games should be open source

This is a post based on a reply I made on Reddit.  When I read the initial post, I realized how my game is using the power of open source to solve some inherent issues with PVP based Multi-player Online Role Playing Games.

The first issue mentioned was performance.  While open source itself does not help directly with this, the Wograld policy of keeping system requirements low helps a lot with this issue.  Who cares if the graphics are beautiful if you can barely play due to the frame rate.  Forget about pvp then, because performance will be so abysmal for many people that you will hardly be able to pvm.

The next two issues are things that are directly resolved through the useage of open source for both the client and server of the game.  Bugs were explictly mentioned.  A lot of games (I'm looking at you Runescape.) have ongoing bugs that are never fixxed even though the developers probably know about them. With open source, the playerbase can directly fix bugs and actually commit a fix in order that the bug just goes away.  Eric Raymond is famous for his quote "With enough eyeballs, all bugs are shallow." Well, now by having all the code, both client and server open source, it will be shallow enough that finnally the bugs can get fixxed.

The second issue deals with game balance.  Ideally, the developers will understand game balance and how communities work.  They should understand the underlying dynamics, and while they should listen to the players, they shouldn't necessarily give them what they ask for, instead they should make a game that creates a healthy and thriving community, and not one where all the players quit over time because game balance is too broken. Sometimes, the developers fall into blind spots and never actually understand how communities work.  If that happens, the original game code still exists and the community itself can fork, and players can play a balanced non-broken game instead of a broken one.

The last issue mentioned deals with cheating. Some people think closed source software somehow prevents or lowers cheating, but looking at all the closed source proprietary games with cheating problems proves that closing up the source code does not prevent cheating.  Instead, some games though they could prevent cheating and still have certain calculations running on the client side.  Cheating can be prevented by running things on the server side.

Friday, October 12, 2018

Gitting up to date

Wow, I know it has been quite some time since I updated this blog.  Believe it or not, I actually am continuing to work (well, a bit on and off) on the project. As of this year, we made the long in coming move of moving to git.  Sourceforge ended CVS support back in November, and that is what prompted our decision (well, actually my decision to change.  At first I wasn't sure, should I import all the 10+ years of project history with all the *** in it or, just start over fresh with the latest stuff.  I decided to leave all the old *** out, because its just not really useful to new developers anymore.  This project has come a long way since the half-baked fork of crossfire days.  So much artwork has been replaced.  I redid some folders to make it more newbie friendly (no more separate arch folder for the server, and the new music files, are naturally included with the client.)  I realize I don't have to stick to the old and poorly thought out conventions from the old game. 
So once I switched to git, we have been making regular commits, and git isn't really that hard to learn.  Its actually easier than CVS.  I don't bother with all those separate testing directories.  I just test it right in my sandbox.  It makes it so much easier. I just simply don't include changed files that don't need to be included, and check with git status to make sure I included all the right files and none of the wrong ones before I commit. 
We have done a lot. A lot of artwork, a lot of music, a lot of code, but there is still much more to do.

Tuesday, December 16, 2014

Bank Boxes and Bugs

Last weekend, my lead programmer finished implementing bank boxes. I kept saying how most RPG's have bank boxes.  For those who do not know about what that means, let me explain.  Characters in computer role playing games often have an inventory where they carry stuff they might need in the course of the game.  That can end up being a lot of items with no real way to organize them.  In addition, in some games, items can be lost upon death or stolen.  Characters may also have a weight or item limit for what they can carry around.  Bank boxes allow characters to put items in them for later usage.  In between adventures, the character can visit the bank box to deposit or take out items.  This bank box can be only accessed in certain usually safe locations, such as towns.  The rest of the time thesse tiesm are not accessable.
Most multi-player online roleplaying games of any size have this feature, so I knew that wograld should have it as well.

I tested the bank boxes and I have not found any bugs with the feature so far.  Unfortunately, I found another serious bug that will have to be fixed before we can even consider a permanent multi-player server.  That is, if you disconnect the client a certain common way, the server will crash.  I have told him to fix that. 

Thursday, July 18, 2013

Map Editor Progress

I don't know if you are aware of this, but we are working on gridarta now. That means modifying gridarta so that it works with wograld, and not just crossfire and a couple other games derived from the crossfire source code.

Gridarta is the new map editor written in Java.  It is much nicer than the old wogedit x11 Athena widget editor that came with the server.  Furthermore, it will be able to run under any operating system.  So you won't be stuck using Linux or another Unix system to run it.

We currently have it in the cvs under java editor and intend to submit a patch to Gridarta once we have all the folders straightened out.  The current build would break the other projects, and it has a few other bugs, but it does work, so if you were dying to make wograld maps you can now do so. 

One of the major bugs is the collected arches don't work.  There are also a few display problems when using certain functions. You can import archtypes for the the wograld folder and edit maps now, however.

I haven't been doing much coding on it myself, just testing it and continuing to submit new artwork to wograld.  The last commit I did, was the skeleton, I think. 

Monday, October 15, 2012

Performance and Messed up Tiles

Well, we got the java client working, doing what it was supposed to do, but then I tested it, and every time I walked into the zoo, it just moved too slow.  It got so bad I could not move my character at all although the rest of the game seemed okay, but still slower than I would have liked.

So a change in algorithms was an order.  Unfortunately the new one doesn't work so great.  Instead of refreshing the whole screen, the new algorithm seeks to only draw those objects that have changed. Makes sense, but unfortunately pieces are not showing up properly, and you can see items, both still, and animated sticking together the wrong way. I would love someone else to look at the algorithm, but who wants to?  It seems there is a rule about free software projects, first make a game people want to play because it doesn't suck, then fix the things that are wrong with it.  It ends up that the first few developers either make or break a project, and if you don't know the correct algorithm to use, then you are out of luck.

Tuesday, August 21, 2012

jwogclnt now connects to the sever but..

I figured out what was holding development up.  We were having some trouble importing the project into netbeans until I figured it out. Unit tests on jxclnt do not work in netbeans.  The orginal developer of jxclnt suggested using Intelej IDEA instead.  So I tried that.

We found some bug with the server as well, probably better not to blog about it here. 


so now, the new client connects to the sever, but does not display the tiles yet properly.  I hope to have that fixxed in the next few days.

Meanwhile, I wonder if our CVS version control is holding us up.  One of the things that concerned me is sourceforge is moving to the allura platform.  At first I worried CVS would not be supported, but it looks like it will be supported on allura.  Also, later versions of netbeans require you to download a plugin for CVS rather than it coming out of the box.



I've been looking at distributed version control systems, both git and mercurial are under consideration.  At first I was kind of leaning towards git, but it looks like mercurial is easier to use, espeacily for windows users, probably the main platform with lots of gamers who want to be developers. Of course the server probably does not work all that well on windows, but I havn't really tried it, not being a windows user myself.  One of the reasons I choose a java client is the fact it will just work regardless of the underlying platform os.

The thing I don't really like about mercurial, is it is written in python. Python is a fast moving language that changes to fast, so I worry if its going to break future releases, although I don't really think that's highly likely as I would think for smaller projects.

Saturday, June 2, 2012

What's my name? Java Development

For the past six months or so, I have just basically been trying to learn to code in Java. I have done the occasional upload of artwork to sourceforge as well. But mostly I have decided to focus on learning Java really well so I can modify the new crossfire java client enough to work with the wograld server. For those who don't know, Wograld originally forked from the crossfire code. Since then the projects have gone in different directions. Crossfire has the same bad game play and artwork and while fixing some bugs, while wograld fixed some ugly artwork and game play while adding new bugs and keeping only the awful messed up x11 client. That is the brutally honest assessment anyway. I understand that user interface developers are the best of the best in the world, and that you could search endlessly to find one who can make such a thing. While I can do the basic hello world, and have been learning some object oriented and graphical user interface, my knowledge isn't quite up to the level to comprehend the entirety of the crossfire jxclient code base yet.

Wednesday, December 28, 2011

Java User Interface Development Woes

What is holding up the project? The User Interface development. The real problem is none of the project team members want to do it. I've written my share of hello world in Java, I even made some bad graphical applications with it in netbeans, but figuring out how to put the user interface in game together has proven to be more of a challenge than that. I looked at the Java User Interface for crossfire. It has all these folders and stuff. I don't know what all those files do and I'm having a hard time following the code to figure out what I need to change to make it work with Wograld.

Crossfire has had several revisions since Wograld split off from it. Wograld has also had several revisions since that time, so it would consist of changing the things that are different so it works with wograld. One thing, is I don't have a metaserver. I would find it difficult to justify having a metaserver when no one wants to play a buggy pre-alpha with missing artwork and most of the awful crossfire gameplay (I mean there is a reason that usually I never see more than four players logged onto crossfire right?)
I don't think the game is even really ready for alpha yet with the amount of user interface work that needs to be done.

I've considered trying to recruit project team members again, but until its really playable, that just seems like a dead end. After all, no matter how good of an artist you are, programmers do not want to work on your game until you show them the code compiling and running with a nice user interface. I hate how programers make artists feel like they are less important. If programmers cared more about artists and what they want maybe we would not still be having these stupid debates about intellectual property and artists would be making money on free culture works all over the place. Sorry, I've been getting into a rant, but its the end of the year and I hoped that the Java User Interface would be done by now.

Wednesday, July 6, 2011

Top Ten reasons not to play Wograld right now

Most people go about promoting their games, saying how great they are, only to be disappointed by bugs and poor game play, as well as bad "programmer art" I on the other hand, will beg and plead with you do not go to the cvs, download wograld, try to compile and run it, and worse yet, try to actually play it. I will give you ten reasons that even though the code is right there, you should not touch it, compile it, run it, or even look at it.

10. Its only been tested on Linux... trying it on the windows system like enough said.


9. You have to follow the admin install directions, if you are the sort of person who is reading this and doing it anyway, even though I said not to , you are not a person who follows directions, so you are not going to do well with getting it set up so it works.


8. Missing artwork. There is only one character class and race that shows artwork in game, otherwise you will be playing an invisible character.


7. Same poor game play as crossfire, only with some missing artwork, so you won't even know what killed you half the time. If you want crossfire, just go play it, but why would you considering how awful it really is.


6. No permanent server set up, how fun is it really going to be playing with yourself...


5. You have to play as root or it won't save your character, or you have to change the permissions on some folders.


4. Did I mention the bad game play, lets go into detail, one hit killed as a newbie sorcerer with a swinging door. Should sorcerers really be that frail? No freaking way!


3.Level system, and experience loss when you die, you lose stats too, so you can get worse than a newb fast.


2. You don't have to die to lose stats and experience, fighting certain monsters will also do this.


1. Ta Da, the number one reason not to play Wograld right now... The user interface is really bad. You won't be able to figure it out. It is ugly, has buttons that do nothing, and no way to know what macros you have easily.

Wednesday, May 25, 2011

Fixxed the Segfaults... BUT

Well, the segfaults are fixed. At least I think they are as fixed as a cat after neutering. As fixed as a eunuch programmer (like instead of a unix programmer with the stereotypical neck-beard)
Anyway, enough with the stupid puns. The user interface for the map editor still sucks dangling donkey parts. You still can't click on things in the pick maps and expect them to show up in the object window of the map-editor. The co-ordinates are all off. Furthermore, all the items in the pick-maps do not display properly. I tried messing with them again a couple days ago.
Instead of fixing the user interface however, my wonderful lead programmer decides to add a bunch of stuff that is in the wrong perspective and the wrong size, into the cvs arch folder. These new arches are from other crossfire forks. I told him he does not need to do that. When I saw what he was starting to do, I got horrified. Except he doesn't use the cvs add command. Now his folder is littered up with a bunch of ? marks in front of the new arches. He really should not have done that. Only one more day until my other programmer comes back from vacation. Then we really won't get any work done because she will be too busy obsessing on cleaning and telling our lead programmer what a lousy job he does wiping the floor and taking out the trash.


I started working on my web comic again and making new 45 degree 64x64 and 64x128 tile objects that we can hopefully add once lead programmer stops trying to add stupid arches and fixes the map editor bugs.


I recently read about something called "programmer art". Apparently programmer art is when programmers do quick and dirty artwork to make demos of some software project. It looks really bad like they can't draw. In most cases, they probably can't, but it is more of a case they don't care how bad it looks. Our project suffers from the opposite problem. I feel like we have a lot of artist code. Code that is just in there to show off the awesomeness of our artwork. It seems like no one on this project really wants to work on the code, and would rather be doing art. You can't play a computer game without the code, however.

Thursday, May 5, 2011

Who's Fault? Segfault

Sometimes I just get so frustrated with this project. I have been looking at the segfaults and trying to find out what is causing them. Just because I know what some x11 functions do, does not mean I have figured out how to fix the segfault errors. serpentshard fixed some of the other crash bugs, but the editor still looks as awful as ever. We never managed to change it so that it would allow you to select the proper area on the screen. The areas you select and input tiles into are still from the old maps. So, although it displays the new tile sets, when you click on them, it is mapped to the old way that things used to be arranged. I don't know how to describe it exactly. So, basically, it looks okay, but it acts like the tiles are still the old 32X32 square tiles.


Well, actually, if you want to see, just download the server with the map editor, wogedit from today's date or a bit earlier and see what I am complaining about her on the blog. If we could have fixed the tiles to begin with, we would not have this problem. I don't know why fixing it in the map editor became so hard. It just did.
I am not sure if the any of the segfaults are directly related to the major display user-interface problem that I described. Actually, one of them is not. If you left click in a box on the top of the editor. When you are over a tile, there is a top part of the editor that displays what is on the tile you clicked. (of course it maps the wrong tile) Then it segfaults on you. That is not nice. But it is what we are stuck with until we can figure out how to fix the code bugs. No one else wants to look at our buggy code, so we are stuck fixing it ourselves. I had thought that open source meant you could get better programmers to do you dirty work like fix major bugs, but I guess that is not how it works. Maybe my essay about keyboard monkeys seems a little naive now.

Wednesday, April 13, 2011

Athena Widget Internet Hunt

My lead programmer decided he would prefer to work on the client user interface, so I decided I would take the other track, the map editor. The map editor is ancient, and uses the X11 Athena Widget set, otherwise lovingly known as Xaw. For those who do not know, X11 has a series of books, volumes 0-8. We have most of the books, but apparently there were two additions of Volume 4, xtoolkitintrinsics. There was the "standard" or rather not so standard edition, last published in 1993, using the Athena Widget set, and the the Motif edition. As you should all know, Motif itself is non-free software. Apparently there are other editions of motif, but that is besides the point, because the ancient crossedit crossfire map editor was written using Athena Widgets, so I wanted to understand how it was put together.


While doing a total re-write using gtk or something would probably be a good idea. I have never used gtk, so I would have no idea where to start, while the wogedit map-editor, is already part way writen. It just needs some tweaking to display tiles properly. So many games do not have map editors even when they should, that I feel a poorly written editor with a bad user interface is much better than none at all.


So, anyway, I spent all of yesterday searching the internet for clues as to where the example problems for the Standard Volume Four, X11 book could be found. I already managed to get a pdf edition (uploaded by the publisher) of the book here. http://www.archive.org/details/xtoolkitintrinsic04nyemiss


The more into the book I read, the more I wanted the example problems already coded for me so I would not have to waste hours of time typing them in wrong. That is actually what took the whole day. I asked on Freenode, the xorg chat channel. Someone commented that they hoped that the code examples were lost along with all interest in that ancient version of ancient X11 widgets.


Unfortunately, it is too late for that, I have an X11 Athena Widget obsession, and I managed to find the example code right here. http://examples.oreilly.com/9781565920132/
Be sure to download xtprog4.tar.Z for the Athena Widget book examples. You can unpack it using the regular tar command.


Admittedly, I wonder sometimes what the Goddess Athena thinks of having her name tacked to an obsolete X11 Widget set.

Wednesday, March 9, 2011

Bug hunting, the continuing story of gdb

Finding the bugs and using gdb is not so simple as it first seemed. First I tried to compile all those files with the -g option, but even after asking around, I could not get it to give me the exact line in the program where I was getting the segfault error. The lead programmer had not made any progress with it for several months. He is useless now, it seems, so I will have to do something I have never done before, find the bugs in wogedit, and fix them myself.
I ran some x11 tutorials in gdb. They work great, and gdb gives me the line number when I introduce bugs (I quickly found a way to add a segmentation fault bug to the x11 tutorial) . So it seems I am stuck looking at flags in the makefiles. For some reason, the flag FFLAGS, a flag that is supposed to be for the fortran compiler is where my -g flag is showing up. I thought it would give me the c flags instead, but it does not seem to be doing that. I wonder why the makefiles include it. I know this project still has strange bits of code I have not looked at yet, but as far as I know, it does not use any fortran. I don't even think I have this F77 compiler installed on my machine. I don't know anyone who uses fortran for anything nowadays.
So, I am reading up on autoconf, automake, and make in hopes that I can solve this mystery before I die of old age.

Saturday, February 26, 2011

Artwork commit and gdb

Recently I did a big artwork commit to the project. So for those of you who wanted to see all the new tiles, you can go ahead and access the cvs and get the latest arch. (Yes, it is working on sourceforge for now, but who knows for how long) I also edited the admin install yet again. Please let me know if the directions for installing the server and client in linux are unclear.


Also I have been trying to learn gdb. For those who are unfamiliar gdb is the Gnu Debugger. I got tired of waiting for my knight in shining armor, my prince charming (well actually my evil wizard) to debug the code. So there are two major map editor bugs (possibly more) are still there to be found and fixed. They are

1. segmentation fault crash when you move a scroll bar

2. some of the tiles do not show up correctly, they appear to be blocked out by other tiles although this works perfectly in the client.
As always new contributors are welcomed.

Monday, January 24, 2011

Art Tiles = Project Motivation

While the editor bug is still there and taking a long time to find, at least I am making some progress in the game. I have been working on the art tiles. The new tiles are the 45 degree isometric perspective. While many of the tiles have already been replaced, some have not. Also, some of the old perspective tiles when converted to the new perspective do not look good, although they did not look good in the old perspective either.
Our lead programmer says that seeing the new tiles gives him motivation to sit down and find the bugs.
I went back to an old message forum to read my ancient post about recruiting Wograld developers. No one there was interested. Not only that, but someone commented that only insane masochist programmers would want to work on the project. That is the wrong idea. After all, masochism is one of the nine stupidities. So it seems that all over our developers already have the qualities nessessary to complete the fool quests in Wograld.

1) Indescretion. - this blog is prof of that.
2) Lust - I'm lusting after Wograld, I want it so bad.
3) Foolhardiness - Well, if this project kills me, my only hope is some other foolhardy adventurers follow in my footsteps.
4) Paranoia - lead programmer though someone was entering his house, but it is just the furnace.
5) Masochism - Wograld developers have already been labeled as Masochistic. Why else would we spend so much time on it.
6) Vengence - this is revenge for all those times that rpgs like Ultima Online and World of Warcraft did not live up to my standards.
7)Thievery - We copied the code from crossfire, not exactly thievery,
8) Humilation - We have humilated ourselves over and over trying to promote this pre-alpha project.
9) Skepticism - hmm, I don't believe in C programers, oh wait...

Sunday, January 23, 2011

Squashed Bugs or Sqaushed Egos?

Every so often it gets tempting to start doing something else instead of the difficult Wograld project. Even to this day, I do not consider myself a very good programmer. Sure, I did some C programming, and I have written some text based programs, that were mostly made of other programs stuck together with the variables renamed. Unfortunately, when it comes to basic things like understanding how C reads and writes to files, as well as how to use the x11 libraries in the code, I still lack understanding. Instead, I have been relying heavily on my lead programmer, a man with an ego problem (his problem being a lack of ego rather than, like most programmers, having a giant ego) to fix the bugs.


He has been stuck for a long time on the editor bug.
The editor crashes when you use it and try to scroll down. Also, some of the tiles do not appear like they should, instead they blank out the other tiles when they try to appear on the screen. Instead of having my describe it to you, you should actually just download the latest cvs release, as well as the old crossfire maps, and test it out to see what I mean.
I would like to put the bug out there for others to solve, but I worry it will hurt his poor ego. I'm sure he does not want to read this blog where I talk about him and his problems with self esteem.

Wednesday, December 8, 2010

Nanowrimo

The whole of November was taken up by me writing a novel. www.nanowrimo.org The C++ group I was involved with got to chapter 7. After that, we kind of stopped. Something about chapter 7 in that book just got very hard all of a sudden, even though we seemed to be making progress prior to that. Well actually, each chapter just got harder and harder.

One nice thing about novel writing is you do not have to worry about having a project to large to do by yourself at all. I find that I can write a whole novels myself without any help from anyone else. I won the nano write, but I still have not finished the story, being as I got over the 50k needed to win, but my plot is not really more than halfway done. The story is about a web developer who has no social life, so she joins a cult.

I could talk more about my plotting problems here, but I think I will leave that for somewhere else, as I know not all game developers like books in the horror genre. My husband loves to read horror novels, but he would not like to see the horror stuff happen irl. So then I asked him. If you don't like it for real, then why do you read so much of it? He likes a lot of Stephan king, except for the dark tower series. I hope I did not fill up my book with too many descriptions of her dreams and nightmares. When I do the editing, my critics might insist I take that part out.

Tuesday, September 14, 2010

Learning C++

I decided to take some time away from just working on the project to learn C++. If you have been reading my prior posts, you know how much I hate Dependency hunt. Dependency hunt, for those newbies who do not know, is when you run all over to try to install library dependencies that are needed for some user applications in GNU/linux.
I am on the 7th week of it now. We are on chapter 5, having started on chapter 0. After chapter 2, it got hard, so people wanted a week to catch up. I just read chapter 5 today, but have not tried to do any of the exercises yet. I really have no idea how to do them. I will probably go around playing with the code and changing various things before I understand what is going. I still don't understand some things about chapter 4 (or even 3 for that matter) But I want to move forward and learn new things. If I know enough C++, theoretically, I could fork every project that requires SDL and other stupid C++ libraries so they have no dependencies and people can just compile them from source without errors. I could do this by renaming files in the C++ SDL libraries and in the code so that I could find the right version of SDL to make it work. Then I could include this in the code, making it part of the code body rather than a separate dependency that breaks everything else if you decide to upgrade it.
I know for a fact that later versions of SDL are buggy and incompatible with some code. I do not think you should rely on consistency in libraries done by some one who probably doesn't even know, nor care about your project.

Saturday, February 13, 2010

User Interface Progress

The new User interface code is being worked on, but still not ready to be committed to the cvs. It takes a while to figure out what all the things in x11 do to allow user interface options to occur. Serpentshard has already go the code going that opens and closes the buttons. It was suggested by several people to make the game take up the whole screen, and then have the windows pop over it rather than just having it take up 2/3 of the screen like I currently show in the mockup on the forums. I like this idea, but not being much of a programmer myself, I am not sure how that would be to implement. I know that some things are very hard to program.

One time I thought I would work on a voice recognition system for elderly people with dementia, so they would have a system that would talk to them and constantly answer the repetitive questions that they ask. But the software I tried would not even compile or run on my computer, so I realized I was in way over my head with the voice recognition thing. At least with this project I have been able to make progress.

Anyway, I am amazed at what the x11 libraries are capable of so far from what I have seen. I did not know it could do all that because I had not seen any prior programs written that had those features like that. The only thing missing so far is the custom widgets that I want to put in, such as my own buttons, and ideally my own scrollbars and containors. Basically, I want the custom artwork like most good looking games have that I am currently working on making now.

Sunday, January 24, 2010

Code Documentation

Several people have complained that the crossfire code (and as a result the Wograld project) has poorly documented code. I realized how the functions could be much worse than they are and how the comments could be much less descriptive. The variables could be renamed so what is named monster stats is actually something like player alchemy skill or some equality inappropriate and confusing variable names. I have been reading through several of the code files. I know it is going to take me a while to get through them all.

Also, I need to finish making the graphics for the various bits of the user interface, all tweleve buttons, chat log, quest log, combat log, character stats, character skills, looting, inventory, paperdoll, macros, options, automap, party. I am still not sure how to make the x11 give the program the look of my artist view of what the game should look like.