Jump to content

  • Log In with Google      Sign In   
  • Create Account

Servant of the Lord

Member Since 24 Sep 2005
Online Last Active Today, 07:31 PM

#5293664 What is the top factor for MMO engines limiting world size?

Posted by Servant of the Lord on 26 May 2016 - 02:30 PM

I might suggest that the 90% Crap Idea™  is pretty much what we already get from the MMORPG companies.

Yep. That's exactly what Sturgeon's Law observes.
So let's make games that are in the 10% or, rather, in the 1%.

I suppose I could say that Open Source never could work because of this Sturgeons Law,  but what is the reality there ???
Yep, all all a miserable failure ... right ?      Nobody in their right mind will do anything quality for free ... right ?

Sturgeon's Law doesn't say 100% of opensource projects would be trash. Sturgeon's Law would predict that 90% of open source projects are trash.

What does real life say? "Caution: the vast majority (>90%) of FOSSD projects fail to grow or to produce a viable, sustained software release".

So, yes, Sturgeon's Law applies to Open Source software.  :wink: 

The few dozen people know about - i.e. the famous ones - are a tiny percentage of the ocean of open source projects, the vast majority of which fail.

Further, many opensource projects, even when 'successful', are still buggy, poorly coded, or stupidly unintuitive to use, from a lack of cohesion (what I call "unity of design"). Few opensource projects are actually incredible - and many of those incredible ones are incredible because commercial companies pay people to work on them, or were even started by corporations and released as opensource later, given the project a good running start of consistency, organization, and dedicated workers.
That wasn't my point though - my point was within your one game, 90% of everything players would create would be trash, and of the remaining 10%, 90% of that would be merely mediocre. Even then, everything still lacks cohesion.


Actually, maybe even higher than 90% would be trash - Sturgeons Law was applying to published works that have already gone through editing - and still 90% was bad. A scary thought in itself.


Players are constantly starved for content and wake up their accounts for a month or two and then stop playing and paying (til 6+ months for the next 'drop').  The big games can continue as they have, but have only in those limited genres.

This reminds me of an interesting side-topic, which I'll start a new thread about.

Someone does good ideas or planning, another basic shapes/structures, another refines that (and possibly others do later), another is good at textures and applying them, another is good at realistic weathering/usifying, another can adapt behavior attributes (tweaking or just installing existing templates) and animations/sound effects , some other can do any needed specialized behaviors.

I'd like to see your project succeed - we need more incredible worlds - I just don't see it as all that viable, given the exponential distribution of skill in humans, and human nature / desires. It's not that I don't understand what you are saying (again, people have been discussing this for a decade now, and I've looked into it and given it thought a half-dozen years back) - I understand it fine, I just think it would result in merely mediocre games instead of excellent games; unless you have discovered some truly brilliant insight.


Vision is one thing, carrying it out is another.

While you can say it takes 'a visionary', 'a pioneer', 'consistency', 'expandability', a 'new paradigm', 'next-next generation tech', etc... These words don't mean anything concrete. They sound impressive but lack substance, being mostly marketing fluff words.  :(


That's why I'm unconvinced - I still haven't heard anything new. That said, many great ideas throughout history have had people staring at it saying, 'it can't be done', so don't get discouraged by my lack of agreement. Instead, prove me wrong sometime, by making an incredible game that I'd actually want to play.


[Edit:] hplus0603 is discussing this much better. I'm attacking the flaws I think I see in your ideas, but he's asking you to elaborate on your insight - asking you to share anything you have that is actually new and original. My posts were too confrontational, sorry.

#5293102 What is the top factor for MMO engines limiting world size?

Posted by Servant of the Lord on 23 May 2016 - 01:53 PM

I just posted a post in a different thread that is related to this, about how I want more "content-DENSE" worlds (with better quality of content), not merely larger land masses and not merely more generic content.


To me, "better" is not "more of what is boring", but instead "more enjoyable". I'd be delighted with games that are only 10% of the size of the GTAs and Farcrys and EQs and WoW, if the game was more enjoyable.


This post I wrote a few months ago might also be interesting to you, but is less directly relevant.

#5292978 Designing ownership

Posted by Servant of the Lord on 22 May 2016 - 09:32 PM

Humans respect ownership

The majority of human history disagrees with that.  ^_^

Humans "respect" ownership when the risks and punishment of getting caught exceeds the necessity and the rewards of getting away with it.
If: A) the necessity is huge enough (e.g. you are literally starving, and you see a loaf of bread)
    B) the reward is great enough (e.g. a bunch of diamonds or bars of gold or very large numbers in a digital bank account at your fingertips)
or C) the risk of getting caught is virtually non-existent...
...then human "respect" goes flying out the window, along with the thief and the loaf of bread or sack of diamonds.
Ancient Greek philosophers theorized about this, conceptualizing the One Ring of Power. Their conclusion is essentially, the primary reason to be moral is to not be enslaved by immorality.
Basically, humans don't respect property, unless by "respect" you mean the kind that comes at the end of a big stick, and then it's the stick (and the wielder) they 'respect', not the idea of ownership itself. That stick can be government-ran police, court systems, etc... or getting one's butt kicked by a homeowner who finds you in his garage.
That same 'respect' can just as easily exist in the animal realm - All rabbits acknowledge and respect the fox's claim to the den. Animals, and humans, ""respect"" the property of the biggest animal. In the forest, the wolf, in Russia, the Putin, in Syria, the Assad, in the USA, the criminals, police, and government officials (who sometimes overlap).

I don't agree. If birds come across a nice place to build a nest, only to see half a nest already there, they assume some other bird is building a nest there, and they move on.

Or they lay their own eggs in the nest, to trick the original nest-builders to raise their young for them.
Or they eat the eggs already in the nest. Or they steal the materials used in the nest to build their own nest.

This firm once existed, I'd have you to know,
Messrs Lion, Wolf, Tiger, Fox, Leopard & Co
These in business were join'd, and of course 'twas implied,
They their stocks should unite, and the profits divide.

#5292627 My C++ gotcha of the day

Posted by Servant of the Lord on 20 May 2016 - 07:49 AM

Yea, I would've assumed the template generation would've been delayed until the full definition of the class became available - not treated as an empty class.

Your code is invalid, but irrespective of the use of union (and your compiler is apparently broken because it does not notice).

It's a psuedocode example, not my real code. What part did I mistype?

members with constructors are not allowed in anonymous aggregates. That is, you are not allowed to write anything like struct { HasConstructor foo; };

Bwah? Why not? I get in unions, it doesn't know which to call, but why not in anonymous structs?

I never knew that, thank you for the insight.

So, in reply to "Are accessors evil?" one could say: "Accessors just saved my ass".

I don't think accessory are evil - I use them frequently, where appropriate.

Since I was wanting the array type-punning for iteration, my "solution" to my above problem was adding it explicitly (and making the class a struct):

    auto begin()       { return &topLeft; }
    auto begin() const { return &topLeft; }
    auto   end()       { return ((&topLeft) + 4); /* one past the final element */ }
    auto   end() const { return ((&topLeft) + 4); /* one past the final element */ }
    auto  size() const { return (end() - begin());  }
          Type &operator[](size_t i)       { return *(this->begin() + i); }
    const Type &operator[](size_t i) const { return *(this->begin() + i); }

#5292521 My C++ gotcha of the day

Posted by Servant of the Lord on 19 May 2016 - 11:59 AM

Here's conceptually-similar code: (part of code to render some 2D sprites on-screen)

struct Color
   uint8_t r = 255;
   uint8_t g = 255;
   uint8_t b = 255;
   uint8_t a = 255;

struct Vertex
   Color color;
   Other stuff;

union QuadCorners
    struct { Vertex topLeft, topRight, bottomRight, bottomLeft; };
    Vertex vertices[4]; //type-punning

And elsewhere in my code I save a copy of the current vertices for "settings".

struct Settings
    QuadCorners corners;
    Other stuff;

class Editor
    void PlaceNewQuad(vectpr4reals position)
        Quad *newQuad = CreateNewQuad(position);
    void ApplySettingsToQuad(Quad &quad)
        quad.corners = this->currentSettings.corners;
        quad.corners = this->currentSettings.corners;

    Settings settings;

Well, for some reason, my colors were all gibberish.  :P




I only realized what was going on when I stepped through the code with the debugger and saw that Editor::settings started off with bad values.

#5291757 Any Mentors Out There?

Posted by Servant of the Lord on 15 May 2016 - 08:29 PM

As awesome as mentorship sounds on the surface, the risk is if you stick with one mentor instead of a whole community of advisors, that you accept the one mentor's advice as automatically true, including the bad advice, and because it's done in private, nobody is there to rescue you from being poisoned by wrong information. Tutorials, videos, and even books also contain poisonous info, which is why questions should be directed at communities, where you can get the benefit of twenty different people proof-checking each-other's answers to your questions.


Mentorship does have benefits, but in moderation. In my opinion, mentors are best for encouragement - having someone to go to when you need motivation - while you still need to be taught by a multitude of teachers, and need to learn by doing research on your own and following tutorials.


Yea, programming is addictive and alternates between excruciatingly frustrating and incredibly pleasurable (sometimes at the same time). Being good at math is definitely a bonus, but not a requirement (depending on what you are working on - some areas are more math-heavy than others) - I'm pretty poor at math, but manage to get by just fine.


A tile-based strategy game is a very reasonable goal to shoot for (after you get a few smaller practice games under your belt).

#5291363 Can anyone with Windows 10 PC help test my App on a performance issue

Posted by Servant of the Lord on 12 May 2016 - 09:39 PM

The only problem here is you know, for developers to evaluate the rendering performance, which tends to be the main reason why non-Vsync mode is still useful.


Yes, but it's (usually) only important to evaluate the performance of code that actually does something significant. If you are sending very little work to the videocard, even if you profile it accurately, it'd be of almost no value. It'd tell us things like 40% of your time is being spent clearing the screen, 10% is drawing textured triangles... because you're only draw a single triangle. The proportions of work, not being a realistic workload, would give misleading information - or rather, would give accurate information (spending 4x more clearing the screen then rendering textures), but most likely lead to misleading conclusions pulled from it (the wrong conclusion that we need to optimize screen clearing).


Another example is economies of scale - alot of graphics work has setup costs before a draw operation, and then is designed to churn through a bucket of work. Drawing three times more triangles doesn't cost three times as much time, so it's not easy to extrapolate framerates ("I'm drawing 10,000 triangles at 10 ms a frame, that means I should be able to draw 30,000 triangles at 10 ms a frame", would be incorrect extrapolation). It's just better to profile realistic workloads.


Plus, consumers greatly outnumber developers - AMD should have its default settings configured for consumers.  :)


Anyway, about vsyncing, maybe your AMD control panel ("Catalyst") has Vsync turned on, even if the application turns it off. Those control panels can override applications' explicit requests, making applications run with different settings than it asked for. Probably worth a look.

#5291361 Can anyone with Windows 10 PC help test my App on a performance issue

Posted by Servant of the Lord on 12 May 2016 - 08:43 PM

Oops, I forgot to mention I tried to run your app, but since I didn't have VS2015's runtime installed, it failed to start due to missing DLLs that I didn't want to install.


I don't think it's reasonable to have such simple task to run just under 120 FPS while both CPU and GPU are almost idle.

Sounds reasonable to me. If your program isn't really doing anything, why should the videocard hand your program extra resources?


I don't think it's reasonable to run at 2000 frames per second, if 1940 of those frames are pretty much being wasted.

I'm ignorant in this area, so hopefully someone more educated will come along and confirm, but I would -guess- that unless your application is handing the videocard a few tens of thousands of triangles a frame, it's not going to bother spinning up to full power.
Unless your program drops below your desired target framerate (i.e. 60 FPS or whatever your goal is), or until your program is actually processing a workload similar to what your game is actually going to be running, I wouldn't bother profiling at the 'whole application' level.

#5291345 Can anyone with Windows 10 PC help test my App on a performance issue

Posted by Servant of the Lord on 12 May 2016 - 05:06 PM

You mentioned this is the "simplest app" - profiling a program that does virtually nothing isn't too useful. Try profiling your application as it's really being put through its paces.

Also, have you updated your driver for your desktop?

#5291059 How do I measure risk?

Posted by Servant of the Lord on 10 May 2016 - 07:20 PM

Recently i read a thread (damn! am not able to locate it anymore), where the OP asked why a particular game should take up to 4 years to make by the solo developer.
Overwhelmingly the replies where that 4 years (some even suggested 6 years) is just about right and not too long.

Here's the thread.


I was the one who said I've been working six years on my project, but it was due to learning as I go, and wasted effort by focusing on the wrong things at the wrong time. I wasn't trying to say that game development should take six years. Personally, I think 18 months is a much better time-frame to focus on, but that requires some existing experience under your belt, methinks.

#5290847 Quick help on const

Posted by Servant of the Lord on 09 May 2016 - 12:47 PM

Alright folks! gonna use const Node* getChild(int index) const for now instead of getChildren() to get the whole thing. I literally have no use of it for iteration whatsoever outside itself anyway.

As Oberon_Command said, that means you won't be able to edit the child.
Normally what is done in these situations, is to provide two functions:

const Node* getChild(int index) const   //Called when the class is const (as accessed through whatever variable you are using to call the function)
      Node* getChild(int index)         //Called when the class isn't const

That way, when you do something like this:

MyClass myClass;

Node *node = myClass.getChild(12); //Calls the non-const version of the function, which returns a non-const node.
if(node) node->setValue("meow");   //And we can read or write to non-const nodes.

...you can change the node's values.
Same thing if you are using a non-const reference or pointer:

MyClass &myClassRef = myClass;
Node *node = myClassRef.getChild(12);
if(node) node->setValue("meow");

But when you are trying to access the function through a const variable or const reference, it prevents writing:

const MyClass &constRef = myClass;
const Node *node = constRef.getChild(12); //Calls the const version of the function, which returns a const node pointer.
    node->setValue("meow"); //Properly fails to compile, since we don't want to allow editing of const classes.
    node->getValue();       //We can still read from the class though.

And if you do need iteration, you can just create begin() / end() functions in the class yourself, by exposing the internal container's begin() / end().
If you're using a modern C++14 compiler, it's as easy as:

class MyClass
    auto begin()       { return children.begin(); }
    auto begin() const { return children.begin(); } //We want const and non-const iteration to be available.
    auto end()         { return children.end();   }
    auto end() const   { return children.end();   }

Note: If you are using an older compiler (C++11 or C++03), it's still easy to do, it just requires a smidgen more boilerplate code.

#5290741 Quick help on const

Posted by Servant of the Lord on 08 May 2016 - 09:07 PM

const NodeList& const   [...]

which means nobody should be able to modify the return value nor the reference.


But you can't (normally) modify the reference anyway, so the second const is redundant.


With pointers, the second const actually does something... but isn't used very much. Why prevent a pointer from later pointing at something else? In almost every situation, that's not needed, and doesn't add much safety benefit. The few times I've actually needed the pointer itself to be const is fairly rare, unless you apply it as a general coding rule to, for example, every function parameter.


Making the variable be const that the reference/pointer points at, on the other hand, is much more commonly useful in my projects. By default, most of my pointers and references apply constness to their targets.

#5290682 Custom editor undo/redo system

Posted by Servant of the Lord on 08 May 2016 - 12:06 PM

It seems the command-pattern is the way people usually go. Like the Qt Undo Framework. What in particular do you dislike about it?

While I don't have undo/redo in my editor yet, that's the way I was going to go.

#5290312 Time - the most important factor.

Posted by Servant of the Lord on 05 May 2016 - 02:35 PM

Well, i will order the next month a $2000 PC specifically for 3D render


Why? Are you making an animated movie? I thought you were making a game - why are you buying a PC that specializes in the wrong areas? Ofcourse, computers are general-purpose devices, so it'd still definitely be usable for game development, but it seems the wrong area to begin looking.


My computer costs $700 + $120 for a SSD + $120 for a monitor, and it serves my development needs perfectly fine. I'd spend another ~$200 if I was doing 3D work.

My computer is not currently limiting my work. If it were, I'd selectively and intelligently spend money to focus on the parts that are slowing me down.


This sounds like someone who is wanting to learn carpentry and then goes and buys twenty different kinds of expensive hammers, not even knowing which of those hammers he needs in what situation.

Or someone who is wanting to be an artist and goes and buys expensive paints. Beginner artists should use cheaper paints, because they don't know what they need or how to bring out it's full potential until several years later, meaning the money gets wasted.

I personally know several artists who work with very cheap materials, and make art better than most professionals with professional tools. Those same artists I know then carefully invest to upgrade exactly the materials they find hindering them, rather than just upgrading everything willy-nilly.


Average tools won't limit beginners,until they reach above-average skill levels. That's when they should invest in better tools, as they find themselves no longer limited by skill, but limited by tool capabilities. Better tools don't make beginners automatically become experts. 


If you have $4000 dollars to waste, it's not going to go anywhere. I'd put it somewhere safe (i.e. a bank), and in six months or a year, you'll be able to make much more informed purchasing decisions.

It's your money, obviously you spend it how you want, but since you came here posting in the For Beginners section, that's my advice: Don't be swayed to spend money just because you have it, you'd just make poor purchases because they look shiny and flashy and cool.


I'm not experienced in 3D modelling, so experienced 3D modelers can give you better advice about what to buy. My advice is more of when to buy, and it applies to almost every discipline.

#5290287 Time - the most important factor.

Posted by Servant of the Lord on 05 May 2016 - 12:39 PM

Then there is no reason for me to buy MODO for $1800? Cuz 3D will take a lot more time?


No, you shouldn't buy anything over, say, $50, until you gain enough knowledge and competency to know for certain whether the purchase is actually what you need (and don't be swayed by "testimonies" and marketing controlled by the people who stand to make money from getting you to put your reason to the side). Investing money into tools that you don't even know if you need is stupid.


Even when buying a $50 book, you should till shop around and ask questions read reviews to find out which book is actually worth getting. There are two costs: The money-cost of the book, and the time-cost of reading it. Neither should be spent haphazardly.


Depending on the size of your bank account, it may not be worth spending an hour to decide whether to spend $60 on a book (I don't know about you, but I don't make $60 an hour), but it absolutely is worth spending an hour to prevent 10 hours of wasted time reading a book that's not any good.


The same with 3D modelling tools. You don't need to spend $1800 for a tool that you don't yet need, and you don't need to spend 30-50 hours learning to be proficient at that tool, when you don't need that tool.


Even if you need to make 3D assets, why waste $1800 + 50 hours to learn MODO, when you can waste $0 + 50 hours to learn Blender (which is super widely used, even by pros, and also free)? MODO might be a better tool for professionals (I have no clue), but you aren't yet at professional level, and by the time you become professional (years down the road), MODO may not be the tool the professionals still use.


Obviously I don't know your current skill level in 3D modelling, but usually the people who are competent already know which tools they should buy next, so I'm making what I feel is a safe assumption.