Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Winterheaven

Pages: [1] 2
1
General Discussion /
« on: May 09, 2004, 10:36:05 am »
Great idea, @DevotedEternal.

The dexlan picture under fakes was the best one. Really nice... remembers me to make Moogie not my enemy.

br, Winterheaven.

2
Development Deliberation / A closer look to PS development.
« on: May 03, 2004, 03:57:10 am »
After spending half of the night in the CVS of PS and in writing this article, I decided to publish this post as an extra thread. It has not much to do with the leaving of kronon... and it should better reside in the development forum.

Quote

Originally posted by Vengeance

While I think there are some areas better than others in our code, most of the comments in here have not been about those sections, but instead have been very general comments about the complexity of CS.  Yes it is complex, but I\'d like to hear from you which parts you think you can take out.



Ok, Vengeance, you want to have concrete hints, where CRITICS see problems... and damned, you are right. It is tedious to talk about common tasks, when they never come to the bottom. I am not willing to leave me in the corner of the critics without analytic expertise. But perhaps I belong exact to that place? Anyway, I want to show, what I mean. (Btw, YOUR comment was as general as the others too ;) ).

I simply walk in the actual CVS in the heart of the client/gui directory. Took there the first from the (alphabetically sorted) files: chatwindow... header and implementation file. Wandered over the first class and stopped at the second one: pawsChatHistory. Now I examined the declaration AND implementation. Following things I want to mentioned:

Global Issues:
  • Comment says: \"Class to store chat history.  Implementation is a circular buffer\". Hm... looking only to the declaration of the class functions and member variables I thought... this code CRYES for a template class. If there is a need for a similar buffer of an other type the programmer has to copy/paste the whole thing (one of the main source of errors in coding).
  • In the function Insert() the copy of the string argument is allocated with csNewStr() - a Crystal Space function. But what, if I only want to code in some parts of the Planeshift code. Is it necessary to now all the details about CS-functionality? So every coder willing to help planeshift is liable to get also close to Crystal Space. Wouldn\'t it be better to HIDE the engine code?
  • What does csNewStr? Does it allocate with new or with one of the alloc functions? The resulting buffer is freed with delete. So probably csNewStr follows its name and calls new. But why then is the buffer for the string pointers allocated with calloc? Is mixing the allocation function a standard procedure in planeshift. Are there existing rules? Where is this DOCUMENTED? And how the allocation functions are traced? Does CS this? Is the global ::new allocator overloaded? Where is it DOCUMENTED? How do you check for memory leaks?
  • How do you profile the code? I do not see any function traces? Do you get the compiler generating profiling code? Do you take professional programs like Numega TrueCoverage or TrueTime? Where is this DOCUMENTED?
  • Why do you decide to use in this class a buffer of pointers and not directly store the strings in the buffer? Fast access to the strings? Or was the reason an easier handling? I do not know. But if I want to learn from your code, I have to extract all your consideration, all your transpiration for myself... and all your preliminary work is for nothing. That is one of the biggest difficulties with Open Source projects. You get soooo much code around your ears... but only very few information, ow the decisions are done. How the organisation runs. How the communication in an international team works. Where are the log files of the IRC-Sessions, where you discussed this? Or even a summarization of this? Does every coder are only responsible for his task? Are there only one boss, which gives out the programming problem?
  • It takes me 15 minutes to understand, that this class does NOT manage the history of the chat window... IT IS THE HISTORY OF THE EDIT FIELD WINDOW. There is really a lack of DOCUMENTATION, if I have to work out this from the code!
  • Why do you use char and not TCHAR or any other unicode-compatibility? Does localization not play a role in PS?
  • Why do you decide not to use the hungarian notation? I find it difficult to distinguish between local and class variables, if there is no naming differences. And more difficult, if I can not see, if the variable is a pointer, an int, float or a string directly in the name.


After I had problems getting the clue of the variable getLoc I made a short test program. Here I must honour the author, because it was a very easy task to program a small console proggy to test the class! But it results to the conclusion, that this class was never tested!

Local Issues:
  • I get a compile warning in constructor: initsize(argument) is of type size_t and size(member) of type unsigned: could result in a loss of data. You should either do an explicit type cast or declarate of same type or at least comment the line to clarify the decision.
  • Why is the check vor an invalid n(argument) in GetCommand() is done AFTER the calculation of the index?
  • Why is the allocation of the buffer implemented in constructor and also in SetSize. Wouldn\'t it be better to set size to NULL in the constructor and then call SetSize() as THE function for reallocate the buffer?
  • Why differs the type of the argument in constructor and SetSize()... even they mean the same variable?
  • In the function Insert() the string is allocated with csNewStr - probably with \"new char[strlen(str)+1]\". Should not the freeing operation be \"delete []\" than \"delete\"?
  • In SetSize() getLoc is wrong calculated at the end (that IS an error). Can be result in an invalid value. Try this:construct object with initsize=3; add three words; call three times GetPrev; call SetSize(2); If you now call GetNext() you get a wrong (but valid) string. The string is valid because of the next error.
  • The function SetSize() was NEVER tested... The line \"newBuffer = (char **)calloc(size, sizeof(char *));\" shows, that the new buffer is allocated with the size of the old... and not with the argument newSize.


That brings me to the last point: Where are all the little test programs, that verify the correctness of the code? The programs, that take a class or connected collection of classes to show, that they work independent of the rest of the code base. The programs, that create different error cases, which make shure, the implementation is strong and right?

I hope, I could get you a clue about my thoughts and how I learned to develope. I would very, very glad, if people find errors in my statements... \'cause any of those hints helps me to get a better programmer.

Ah, only one additional point (the really last one - promised ;)). I will not accept the answer of the lack of persons and time for the above mentioned things. I know that. I agree with that. I understand it. But for a huge project like this, I think some organisation, testing and thinking SHOULD be done before implemeting only one single line of code.

br, Winterheaven.

p.s. I wrote this post NOT to criticize the work of the planeshift team. I wrote this post, BECAUSE I am willing to help and give my (perhaps little) experiance into planeshift. Vengeance asked for detailed comments... and I wrote them. That is all. If this is helpless... sorry for any inconveniences.

3
General Discussion /
« on: May 02, 2004, 08:03:16 pm »
Quote
Originally posted by Fextina
Well, for something as HUGE as this project, I\'d expected to see some sort of organization tree that links the _major_ classes togeather. That is, how the different componenets of the project blend togeather. This would make things _much_ easier for any prospective developer, for s/he can gain some insight into structure of the game.


Thank you for that point of view. It runs in the direction what I would say about PS and CS. I couldn\'t really find some closed working areas, which fits together through a thin, but defined border. That results in the waiting states, acraig mentioned in another thread... when he needs some improvements and has to talk with CS team and then wait and hope the best.

Btw, even the posts of kronon sounds a little bit arrogant, every programmer should be open to any critical word... often helps more than the countless cheers to PS, numerous kisses to the devs and the statement, that you wait until \"it is done\". It is MY opinion, that LOC should not be mentioned as the quality of PS. That makes it not an impartial statement. I would only throw some additional ideas in the pot of coding.

And IMHO it would be a good decision to make usage of CS only throug one or two simple, clean defined interfaces... makes PS independent of the renderer, even switchable at later stage... and at least profiling/debugging can be done individual for every part. The other thing is a (perhaps) missing segmentation of single program parts. I saw the big picture somewhere in the \"documentation\" or website... but I couldn\'t it verify in the code. But it is absolutely imaginable - I already said it - that I am not enough knowledged for such a BIG project.

br, Winterheaven.

4
General Discussion /
« on: May 01, 2004, 03:48:53 pm »
Quote
Originally posted by kronon

-Bad program structure (makes game slow and programming nearly imposible)

-The crystal space, isn\'t as good as people get to beleave. A good friend of mine has taken a look at the source code (having experiance with other 3d engines) and has come to the conclusion that the engine is a monster (not in performance, but in the fact that it\'s an nightmare).But the engine whas developed for software render, so it could be posible that the reason lies there. I could give examples, but don\'t want to diss people, nor the engine.


I agree completely with the both facts above. Maintenance of CS and programming with it is not after the today\'s demands. Small and flexible classes/templates, common usable algorithm and a clean design are the goals for a program that will fit the needs of Engine-Users.

It was the fact in the article Free MMOG Planeshift breaks 100k Players! where I get the sentence: \"PlaneShift comprises more than 800,000 lines of code even at this early stage, including the exceptional work done on the 3d engine by the Crystal Space team.\"

I thought I could catch the monster... but I am either a bad programmer, who could not fit all needed libs, extras, headers and configuration together or I had the wrong teacher. But in my company I get my money for develop SMALL function, to keep the code base clearly-presented and to document, design and discuss for 4/5 of the working time... only the last 1/5 to implement. If the target is to make the biggest LOC-thingy... you have my respect, but my boss would kicked me as fast as he can if I work in such a manner.

I am sorry, that I am such a helpless person, because the idea of PS in general is a wunderfull thing.

It would be nice to program in such a motivated and knowledged team, which had already - questionless - procuded astonished work.

br, Winterheaven.

5
Development Deliberation /
« on: April 25, 2004, 10:57:19 am »
Thank you, @dfryer. Your post brings me to the decision to have a deeper look in the compiling docs. It is all there... perhaps i should buy eyeglasses ;)

My error was to take the old folder visualc6, which contains also workspace and projects. Seems that this is obsolete? Anyway, I should take care reading docs... (remembers me, what my boss said all the time *grins*)

br, Winterheaven.

6
General Discussion /
« on: April 24, 2004, 04:14:41 am »
Argh, i hoped i could this thread rest in peace after the (only) ignorant posts of Aendar and Xalthar. But when a moderator does not care about its words, i can not hold my tongue.

Quote
Originally posted by Mogura

Hmm... don\'t remember any closed \'LAG\' thread...
Sorry, Mogura, but as a member with the status MODERATOR it is not only your privilege to close threads or bann posters. It is also a kind of responsibility to bring threads on topic and TO HELP PEOPLE IN DEEP WATERS. Not every new member is an knowledged internet-user, not every noob was not seeking the forum because of ignorance, but only the first time he is on a forum.

It is a very sad statement, if you do not know the closed lag thread from 2 days before. He is the only one closed, it is closed by you and Cirque wrote additional words about this. Is there a more acrimonious feeling for any poster than this statement?

Quote
Originally posted by Mogura

Those who give up and leave are doing the rest of us a favour. :D
WRONG, very wrong, in my eyes. Is it not your task to invite people, to bring them the idea of roleplaying, to  funcition as a link between the dev team, the community and the game itself?

br, Winterheaven.

p.s. Thanks to acraig for the open words. Such an overview will motivate and shows the people your hard work. BTW, i never directly asked for this information nor was it the reason for the thread opening.

7
Development Deliberation /
« on: April 24, 2004, 01:03:59 am »
Quote
Originally posted by acraig

Yes, that is one issue about using localhost in that dropped packets and latency is usually at a minimum. You can always stick a random delay/random drop inside the network code to simulate the network.
Indeed, that is a possible method. And I use it already. But it will never be the reality ;)

Quote
Originally posted by acraig

VC7 is a better choice since everybody that uses windows uses that. Well, I use 6 sometimes but I use Linux 95% of the time for PlaneShift development.
Ok, will use VC 7 too. The IDE is somewhat improved. But first of all the compiler is now nearer the standard and even to gcc. So it makes sense for a development under different platforms for different targets.

Quote
Originally posted by acraig

Make sure you read the docs in PlaneShift/docs/compiling.txt since the setup to build is a large one and you need several different libraries installed first.
A very good tip. Read now through the document. Will download the precompiled libs. Because there are differences in the code bases of PS and CS. A fresh CVS of CS does not compile any longer to a libcsengine.lib (they changed the structure against 96 very heavy). But this lib is still needed... or better to say it is insert as required library in the project settings of planeshift. That should be changed in the future I think... if PS and CS should go side by side.

br, Winterheaven.

8
Development Deliberation /
« on: April 23, 2004, 09:21:07 pm »
Thank you for the answers. I know of course the possibility to run a local server (at work I am heavily involved in COM/DCOM of M$ and at home I am working on different server-client-architectures).

But on the one side I did not know, if it is allowed to start the server local - which it seems now, is no problem... and on the other side, the localhost/127.0.0.1-development means nothing in respect to any bandwith respective lag behaviour.

But I will give it a try. BTW, I am developing under VC 6 and 7.

br, Winterheaven.

9
Besides my horrible post about the communities tolerance in the general forum (btw, thx to acraig for the open words and sorry for forgetting to name him like vengeance), i am not only a through and through critical people... i am willing to help, if help is needed and my time allows it.

But the question is, where to begin? I red through the information concerning compiling the source code and how a developer can participate the team, but my brain does not get the process running ;)

Let\'s suppose, I want to search for laggy code locations... or I want to enhance the client-gui (as aineko already did in a wonderful way). I then have two choices:

1) I download and work with MB. The Pro is, that a server is running, providing MB-Client-Connection. So i can test all the things I am trying to develop. The Contra is, that I everywhere read about the old codebase and that it will no longer used, when CB comes out and that since a long time no one of the developer is sitting on this code. But that makes it silly trying to improve MB, isn\'t it? Here comes the forbidden question, how long will MB still used.

2) I can also try to compile a fresh extracted CVS-Planeshift. The Pro is, that - preconditioned that my extensions are usefull - I can give my ideas directly to the dev\'s for further improvement. The Contra is - and that is really a pain - I can not test my software, because there is no server running CB. Every reasonably coder does not give any line of code before he knows, that it will run!

I am shure, I am missing a simple step. Could someone give me an advice?

br, Winterheaven.

10
General Discussion / Tolerance lost while waiting for CB?
« on: April 22, 2004, 04:05:23 pm »
Hello, ladies and gentlemen... elfes and dwarfs... lemurs\' and kran\'s.

I am looking more and more seldom in the planeshift forum. And it is no wonder, i think.

1) @Mogura: The other \"LAG\"-Thread was closed very fast... too fast in my eyes. Despite the fact the poster was a little bit harsh, i can still imagine the long loading time and the laggy game play, when i started planeshift first time. And to jump in the heels of Cirque was not necessary I think... he would only help.

2) @Saphire (also in the \"LAG\"-Thread): You spoke about \"un-optimized code, memory leaks, and redundant processes\". Where do you take this wisdom? Are you a programmer? Why don\'t you help the dev\'s with your deep knowledge? I think, Vengeance was very, very ENJOYED about your post. Simple throw his work of years directly in the dustbin. Did not Aineko shows you, how you can take your ideas to advance planeshift?

3) The release time is very long, indeed. I could imagine the difficulties realizing such a big project. But i remember some players (which are now DMs), which talked to me already in november, that CB is already nearly completed. Perhaps there are gaps in information, mix of wishes and reality, deficites in the oportunities of some team members (do not cry loud... we all have errors... that\'s why we are people). But then the organisation, the leaders, managers... whatever you prefer... has to go out to community and make a big sticky: CB will wait at least till... You have nothing to loose except your players. To long waits, wrong information, unbelievable hardware requirements... that all tends to produce expectation, which results in the posts, i have readed.

4) Online RPGs are heavily dependent on their community. They are CARRIED by the community. I hope the best for the future. But sometimes it is better to tell the truth than to smile always and vents your wrath to some noobs, which are simple blended by the nice words on the website and found very late to the forum.

Only some thoughts while reading your posts. Of course, you can close him, if you do not need any critical words.

br, Winterheaven.

11
General Discussion /
« on: February 21, 2004, 11:50:25 pm »
Quote
Originally posted by Axsyrus
PlaneShift is planned to stay free forever, and if it doesn\'t you can always download the full source and go on by yourself :D

(in other words, the devs made this game opensource, everyone can contribute to it, and it\'ll never be p2p)


Hm... not directly, @Ax. We had already the thread about the limit rights on any Planeshift art... and if i got it, any server running Planeshift has to be accepted by the dev team. That makes it difficult to run a \"similar\" game (not mentioned the discussion about the point, _when_ any written game based on Planeshifts Code Base is \"other\" than Planeshift).

Was no criticism, only some thoughts...

br, Winterheaven.

12
General Discussion /
« on: February 15, 2004, 04:12:40 am »
I am agree with Axsyrus and Mogura - it would be a bad preparation and design for such a big game, if the devs make this decision at such a late moment.

But anyway, the thread is up, and there are not few people, who come up with different opinions. Of course, I DO NOT KNOW THE RIGHT SOLUTION. But i am interested in the way, player like to fight. So i will bring in some questions/statements and everybody is free to talk about and hopefully correct me, where i am wrong.

1) Is true turnbased fighting really an option for a multiplayer rpg? That means, that every player involved in the same fight have to wait, until all other made their decisions. When your party sorcerer thinks 30 minutes about the question, if he should heal you or touch the undead opponent, and you wait on your monitor with a cup of coffee... can this be an option?

And that brings me to the real question:

2) Should there be a fixed combat round time or only a time pause for striking the weapon? So the question is, should i wait 6 second, until i am again on my way - like the introducer of this concept \"final fantasy 2\" till the newest one \"KotoR\". Or should it be like in Morrowind or Arx Fatalis - after my strike I am ready for the next one.

And one last thing to mentioned:

3) Has the fight to be more tactical and therefore dependent on your IG skills or should your personal reaction and keyboard+mouse skill come into play? To make this statement clearer: Should a simple click on the opponent start the complete fighting animation - like NWN for example? Or should it be like the Ultima Underworlds, where you can control the strength of the damage with the time pressing down the mouse button and the direction of the sword stroke is dependent of the direction of the screen mouse movement?

br, Winterheaven.

p.s. During writing this article i saw that whemyfield already come up with my doubts about this TB question... hopefully nobody will be disgruntled about this double post. ;)

13
General Discussion /
« on: February 13, 2004, 04:00:49 am »
Arrgh, @Kiern. I wouldn\'t anger you. I read the pages... I read the posts. And i want only a decleration of the term. And I got it.
Quote
AendarCallenlasse: I consider someone a newbie if they are immature and useless to the community.

Nothing more to say... hopefully i am not too useless...

Yours, Winterheaven <- still a NEWBIE ;)

BTW, is Levski really a welcomed NOT-Newbie, because of its \"intelligent conversation\" or perhaps because of its flatteries for the oldies? *nictitates*

14
General Discussion /
« on: February 13, 2004, 03:38:25 am »
I don\'t understand the discussion.

When i realized the first posts, i thought of these people, which can not live in the actual time. People, who think, that in the past all was better. People, who can not even enjoy growing up their children and hope, they will make it better... Does the human being not grow on its problems?

Later posts come out with the statement, that the old days had fewer forum members. And fewer forum members means more fun. Cause everybody knows everybody...  What makes it difficult to live, laugh and play in a bigger community?

The next posts were about statements like: oldies = experienced, play good RP, are friendly; newbies = not really active, only want to be a hero, playing only for crystal hunting... How can you bring such \"status\" down to any forum member?

Am i a Newbie, because of my few posts? But if i do not have to say something? If i set great store by quality?

Am I a Newbie, because of the age? But i am 33...

Am I a Newbie, because only visited the server two times. But perhaps I would only have a look, only meet some role players?

I have a look at the forum as often as  I can. And if there are some interisting things (like the big thread of Golbez\' pure RP), i do write some own thoughts... like now.

Yours, Winterheaven <- a NEWBIE ;)

15
General Discussion /
« on: January 27, 2004, 01:23:14 pm »
@Davis: \"Golbez rhox and you should all listen to him or be smited.\" ... Please let him on the earth ;)

@Golbez & Thynett: Can\'t agree at all.

Concerning naming schema: I would only say, that it is a good thing to have a login-name (which could be Winterheaven1971, cause it is not easy to find a name, which is unique worldwide and not already choosen) and the char name (which can be doubled and should be match the char background).

Concerning only few NPC: It is not the question, IF someone can have fun with playing a church priest (if you read my first post, i mentioned that the concept of everybody-is-a-hero is one of the main rp-killers). The question is, if you can find for every village, town, etc. the children, priests, etc. you need. And should the nice built church empty, the tavern closed? Only because nobody want to play the owner? Should there be no childs on the streets, because you do not find the players?

Concerning background description: We agree perfectly.

Concerning communication & name-list: NO! NO! NO!

How many channels do you want to have simultaneous? I spoke about 6 different communication _kinds_ - all messages appear on the same window (but colored to get their source). Is that your understanding of RP? To have during the conversion on screen with some adventurers 3 additional channelwindows open and talk also there about the new equipment for another guild member with a player sitting in another building?

Besides the very bad style of writing Avallok meets a grain of truth. IF you want to have a \"private friends\" channel, a \"roleplay\" channel, a \"guild of arches\" channel and talk to everybody, you can make this in ICQ, on a social server or in the old text base mud. Of course, before the graphic, sound and processor revolution we had only the bbs and the texts. And so we took the empty screen for our act. But now we have all things together and we should not use only a plain meadow for the game.

I made the experience, that it is very difficult for many people to distinguish between IC and OOC. And only a few people are able to play 2 chars in the same world (if we speak about correct behaviour). Roleplaying does not mean to speak about drinking, fighting, crafting... to speak only in emotes... if it is so, you need no impressive game engine... only simple multi-chat-program.

And the namelist is the wrongest concept at all.  It should not be a feature to know, who is on. Such knowledge should only available through powerful items or magical wisdom. This On-List breaks not only the roleplay, it breaks general play. Of course we like to act in groups with our friends side by side, but... think ingame: IF the friendly adventurer moved to another town to meet his son and you moved to this damned wood to save your old fighting teacher, WHY should you have later ingame the opportunity to talk with this friend. Meet him OOC, or make a date, when you will meet at this and that village (of course BEFORE you devide in different directions).

Give the people a stage, a platform to act... make it playable as good as you can, but neither do them force for strict roleplay nor give them all to destroy any deep playing concept... that should be the target of any RP-Game.

br, Winterheaven.

Pages: [1] 2