Welcome, Guest. Please login or register. Did you miss your activation email?

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 - Critkeeper

Pages: 1 ... 3 4 [5]
61
General discussions / Re: SFML 3 - What is your vision?
« on: October 10, 2014, 11:23:33 pm »
One example of explicit stratification would be a "marquee" interface / abstract class which doesn't exist in strata 0, does exists in strata 1, and perhaps exists with additional switches and options in strata 2.

The interface or abstract class would be inherited by the Sprite and Text classes. Its function is to provide the programmer a way indicate that a specific texture or text should be clipped to a small rectangular region, and that the region is what is being drawn. You could use the state of the marquee to scroll the text side to side or to indicate that the space should be a loop like what you might see on big LED signs that advertise various things. You could also set the state to scroll continuously or discreetly and be commanded by time or call-- so you could implement a sprite sheet with the marquee system, or you could create a very long and narrow sprite that represents hundreds of projectiles and just loop it as described above for looping text.

In strata 1 it would include finer control, so that the region that it is drawn onto isn't specifically a rectangle, but can be any user defined shape and pair of edges belonging to that shape to form a "ribbon". There might be more rendering control so that people can create layered special effects using hardly any texture space or any more overhead than it takes to change local view space coordinates and do some clipping and "stretching" on the texures.

Now that isn't something I necessarily need in SFML or probably something that most people need. I'm just giving an example of what stratification is.

The point is to make MASTERING sfml easier by reducing the skill curve. You reduce the amount of options and you also reduce the complexity. Then people can master a subset of the functionality of SFML proper, and when they are content with that and really are being held back by the lack of options they can move up one stratification level and learn more things and do more things. That increases the rate at which newbie users develop into expert users.

The Stratas do not have differing design philosophies, they just have different audiences. Strata 0 does not try to provide a way to do everything with enough effort, it is supposed to provide an extremely simple interface for doing simple things that allow you to "get a feel" for what SFML is and what the higher stratas do in the general sense.

People who are experts with SFML or who are practicing software engineers probably could just read the documentation and know pretty much instantly what SFML is capable of. What I'm saying is that it isn't necessary to limit your audience because you can have your cake and eat it to. You can please everyone. You can have power for those that want power and simplicity for those that need simplicity above all else, just by stratifying your API. The cost of that design direction is the same as the cost of splitting your userbase into 3 parts, or subcommunities. If there isn't enough motivation in one subcommunity it can fracture the userbase and cause the "pipeline" to fail.

In order to prevent that from happening you would just need to carefully consider what each sub community needs from a media library and carefully design the stratification to meet the needs of the user base. That means writing software for the consumer rather than software for the sake of fulfilling a philosophical idea of what "simple" ought to be.

If software can bring people together, cause them to want to instruct eachother, communicate a tangible sense of achievement (through stratification), endow a sense of responsibility, and be powerful enough to do everything the user could want while being concise enough for the user to comprehend then people will use it regardless of what the word or idea "simple" really means.

As for HOW stratas are implemented, whether by having one API be a subset of another or just artificially through the tutorial is something I consider an implementation detail. It doesn't matter how such a thing is implemented as long as the implementation is effective and it actually organizes the community into discreet classes of users.

The fact is that newbies who ask questions some times get answers that they can't understand because the person answering them presumes an understanding about many different things, when a simple and less accurate explanation which is atleast comprehendable would be infinitely more useful. People iterate. They learn, unlearn, and relearn until they approach an understanding that represents the truth. Giving someone a terse answer that you worked for 3 years to understand may not be appreciated, and this causes a communication breakdown between these classes of users.

By putting people into classes of other people who have roughly the same familiarity with the API, they can work off of eachother's expertise by providing answers and questions that everyone in that subcommunity can understand. By putting incentives to higher strata communities to answer outstanding questions or problems that the lower strata community cannot resolve on its own, you build a positive flow, where some users in a lower community eventually become practiced and familiar enough with one strata to master then next higher one and to contribute to the associated next higher sub community.

The increase in the total number of "SFML Masters" due to the increased flow can cause a wider and more impressive variety of things to be created by SFML users, which can draw in more "newbie" users, and what you have is like a social version of a jet engine where the faster you go the more air you take in and the faster you go.

62
General discussions / Re: SFML 3 - What is your vision?
« on: October 10, 2014, 01:06:13 am »
Disclaimer:
I'm not a heavy SFML user, I'm not a software professional, I am not even sure I am above the median skill level in the ordered set of skill levels across all users of SFML for this library or game programming in general. I'm just a college student studying software engineering and I tinker with SFML when I can find the time to, and the only complete game I've ever made was a dinky arcade shooter in java that was implemented badly.

That said, from the perspective of someone who's judgement isn't clotted by familiarity and predisposed bias for what SFML is or how "simple" it is, whether in an absolute or relative sense, I have a few opinions about what SFML of any version should be. For those who would dismiss my opinion because I don't fully appreciate the functionality of the current SFML, and assume that this disqualifies me from making general assumptions about the philosophy of SFML, I apologize that I can't be any more constructive or helpful to you or this community.

I only have one significant request for SFML, and that is stratification. By that I mean the complexity and functionality of the library should be stratified. A small subset of its current functionality designed to be as approachable as possible even to people who have zero experience with media handling of any kind and limited experience with programming, could be called Strata 0 SFML, or "Simplest fast multimedia library".

Strata 1 could be for people with moderate experience with multimedia programming and probably contain the functionality that SFML currently contains. "Simpler fast multimedia library".

Strata 2 would be for people who want the most power that they can get with a reasonably succinct API, and would be "Simple fast multimedia library".

The point is that it isn't possible to satisfy everyone with a single library because some design directions are mutually exclusive or atleast mutually inverse, like power and simplicity; furthermore the "perfect balance" for one class of users may not be the same "perfect balance" for another class of users.

I may be mistaken, but stratifying sfml won't fracture your user base or triple your work load as developers IF you CAREFULLY choose how implement it. The question comes down to this:


What is the set of things most of your novice users need out of SFML? What is the preferred ratio of power / simplicity?

What is the set of things most of your average users need out of SFML? What is the preferred ratio of power / simplicity?

What is the set of things most of your advanced users need out of SFML? What is the preferred ratio of power / simplicity?

The first set should be a subset of the second, which should be subset of the third. Obviously if it is possible to replace elements with an equal number of elements that can create more power for basically no decrease in simplicity for any class of users ought to be followed. And if it is possible to replace elements with a fewer number of elements for no decrease in power for any class of users ought to be applied universally to SFML regardless of strata.

But apart from that general design philosphy, what is considered an acceptable loss of power for an increase in simplicity, or loss of simplicity for an increase in power is contingent on the preferred power / simplicity ratio of the Strata in question. It may be that we want to reduce the functionality of a lower strata in order to increase simplicity for example. Furthermore, ensuring that the a subset of things in a lower strata are not subsumed by smaller set  which is NOT a subset of the next higher strata is important because users would generally expect that if they master a lower strata then they should be able to transition to a higher one without "unlearning and relearning"  because there exists concepts that are incompatible between the two strata-- there should be no such incompatibility.

Pages: 1 ... 3 4 [5]
anything