[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Wesnoth-wiki-changes] WesnothPhilosophy
From: |
wiki |
Subject: |
[Wesnoth-wiki-changes] WesnothPhilosophy |
Date: |
Sat, 27 Nov 2004 10:43 +0100 |
UserAgent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; sv-se) AppleWebKit/125.5.5
(KHTML, like Gecko) Safari/125.11
IP: 213.64.183.37
URI: http://wesnoth.slack.it/?WesnothPhilosophy
- - - - -
Index: WesnothPhilosophy
===================================================================
RCS file: /home/wesnoth/cvsroot/wikiroot/WesnothPhilosophy,v
retrieving revision 1.13
diff -u -r1.13 WesnothPhilosophy
--- WesnothPhilosophy 27 Nov 2004 09:36:22 -0000 1.13
+++ WesnothPhilosophy 27 Nov 2004 09:43:13 -0000
@@ -1 +1,224 @@
-<spam removed - please restore to backup>
+Spam removed - Tried to restore from commit mail - but reverting to older
version might be better option.
+
+The 18th of December will mark six months since the first version of Battle
for Wesnoth, version 0.1, was released.
+
+At this time, I feel it is appropriate to respond to something Bazarov said in
another thread:
+
+Bazarov wrote:
+
+ am having a little difficulty understanding the core values of the game in
the eyes of the creators.
+ I think having an established, ordered list of these would help a lot in my
attempts to help. A white
+ paper of sorts. I don't think this should be done by voting, either; a clear,
concise vision would be
+ nice. Where does originality factor in? I, too, felt that the game's focus
was on the units rather
+ than the strategy, that the building of my colourful army was more important
than the logic of any
+ scenario.
+
+
+We talk about the 'KISS [1] principle' here alot, and I think that that is the
most core design principle used in
+Wesnoth. It was the key principle that enabled Wesnoth to get off the ground,
and it is the principle that has kept it
+alive since.
+
+First of all, the concept of 'KISS' is a software development principle. Not a
game-design principle. The idea of game
+rules being simple is not necessarily a bad one, and can be linked to KISS in
that game rules that are simple to
+implement are often ones that most players would consider 'simple'. However
simple game rules are not directly related
+to KISS, as many people on the forum mistakenly seem to have thought.
+
+-When I was a teenager, I attempted to write games several times. Some of them
were playable, even impressive -
+especially considering my resources and skill - but none of them were
professional, and polished. When I showed them to
+people, they would be impressed, and say "this looks good", but I knew that
none of them would actually want to take the
+game home and play it for themselves.
+
+My programming skills back then left alot of room for improvement. I had a
basic, self-taught knowledge of C and C++.
+Then I went to college, and after that got a job programming, where my skills
improved immensely.
+
+In some of my spare time, I decided to try writing a game again. What kind of
game? Well, I was confident of my skills,
+so I would write a complex game, using all the latest programming tools.
+
+I wanted to write a Civilization-like game, but with some major rule changes,
and a better AI. I had thought up
+sophisticated systems for everything. The result? It failed before it even got
started, collapsing in a mountain of
+complexity.
+
+I gave up on writing a game for a long time after that. I was busy with other
things anyhow. But then one day, I played
+a game that I had played when I was much younger, a Genesis game: Master of
Monsters. It was fun, lots of fun, yet it
+was simple. Simple enough that I was confident I could program a game like it
easily enough.
+
+I had analyzed that most Free games fall into one of two categories: they are
either boringly trivial, or they are
+insanely complex, and never really get off the ground. I decided I would claim
the middle ground: make it simple enough
+to write, but substantial enough to be lots of fun. It wouldn't be as
ambitious as some things I wanted to write, but at
+least it would work.
+
+But, I don't see the point of writing a Free game which is simply a copy of a
commercial game. My aim would be to write
+something new, something better, something which borrows the best ideas from a
number of other games, and which adds new
+ideas of its own.
+
+
+The idea of KISS is that the feature must be easy enough to program that
before the programmer starts working on it,
+they have a very clear and strong understanding of how they're going to make
it work. Not a 'yes I can do this but it is
+kinda complicated'. Rather they should be thinking 'this is so stupid and
simple that it's really really easy for me to
+do'. So I decided on a simple rule for the game: a feature would be added only
if I knew immediately how to implement
+it. I wouldn't make vague promises to myself about features that would be
later added, but which I had no idea how to
+do.
+
+I started with a few basic units, and two races: Orcs and Elves. Elves had
horsemen, which could advance to knights,
+archers which could advance to rangers, and fighters which could advance to
heroes.
+
+I considered different systems of advancement. Even considering something
which keeps track of the activity the unit
+undergoes, and advances it in that area, but I rejected such a system for
something simple, something similiar to Master
+of Monsters with the added choice of letting the player choose what their unit
advances into at some points.
+
+The focus would be around building your own army, and watching it grow as its
members became more experienced. You would
+only have basic control over the advancement of a particular member of the
army, but you would decide what units go into
+the army.
+
+I also fleshed out a very basic interface. There would be only a few commands:
to move a unit, and to attack with that
+unit, as well as to recruit and recall units. I added in unit skills, which
was something Master of Monsters didn't
+have, but I made the skills occur implicitly -- healing would be dispensed to
all units around a specific unit for
+instance.
+
+Obviously, Wesnoth is a fantasy game, so it contains some implication of
spells/magic, however I have always disliked
+games that got deep into sophisticated systems of spells.
+
+In Wesnoth, wars would be decided with sword and bow. Mages would be involved
too, of course, but warfare was to be
+about guiding troops around strategically, not about which spell to cast and
where. So, from the beginning I decided
+that all spells would be implicit, or simply a type of attack.
+
+This was a big divergence from Master of Monsters where one spell could be
cast every turn by each master at any place
+on the battlefield. That was, in my opinion, one of the game's worst features
- if your enemy had advanced a unit on the
+other side of the map, you could try to kill him with a spell.
+
+I also made the combat very simple. An example of this is the way in which the
chance to hit is calculated. I'm
+wondering how many people know how the chance to hit is calculated in Wesnoth?
I thought it was alot more complex in
+Master of Monsters until I studied how they did it.
+
+What I suspect most people would immediately consider for a chance-to-hit
system would be a formula that relies on the
+attacker's skill with the weapon, and the defender's defensiveness, as well as
the terrain the defender is in.
+
+The way Wesnoth does it is in fact so insanely simple that I suspect many
people who did not know how it is done will
+think 'what a naive, silly system!' when they read the following:
+
+Quote:
+ The chance to hit is taken entirely from the defender's defensive rating in
the terrain it is in.
+
+
+So, Elves are always 30% chance to hit in forest, and 60% chance to hit in
grassland. The attacker's skill doesn't come
+into the equation.
+
+I decided it would add interesting strategy, though, if just a very few
weapons had a special attribute that would
+guarantee them a certain chance to hit. I decided that was an appropriate
thing for magic, to differentiate it: so, I
+decided that magic attacks would always have 70% chance to hit.
+
+For all my efforts though, and for all the people who say that graphics are of
little importance or unimportant, I don't
+think that Wesnoth would have gotten anywhere if fmunoz hadn't seen it, and
drawn some very good graphics for it. The
+graphics I had drawn were pathetic, but he drew some nice ones, and added the
undead and later humans to the game, as
+well as doing some scenarios, and adding some very good ideas to the game.
+
+I think it's important for us to remember the KISS principle as development
continues. Remember: Wesnoth has not reached
+1.0 yet. It's not a finished work. It could still fail. Let's make it easy for
it to succeed by keeping everything
+simple.
+
+Oh and how did I come up with the name 'Wesnoth'? It was late at night, and I
wanted to release version 0.1. I muttered
+syllables to myself, until I came up with a pair that sounded halfway
reasonable: 'Wesnoth'.
+
+David
+
+[1] Keep It Simple, Stupid
+
+||More on the KISS principle||
+
+The reason behind the KISS principle is fairly straightforward: often
programmers will be confronted with someone -
+perhaps a user, perhaps a designer, perhaps themselves - who wants them to
implement something to work in a certain way.
+Oftentimes the programmer can only just work their head around all the
requirements, and when they start implementing
+the feature, they don't have a clear idea of how the entire feature is to be
implemented, because it's so complicated.
+
+Such a situation inevitably leads to low-quality and very buggy software.
+
+KISS intentionally has the 'stupid' part, because often 'architecture
astronauts' as they're known come up with 'super
+elegant generic designs' that to them are simple, and most importantly,
elegant. Elegance is nice, but in a real-world
+situation, it doesn't defeat KISS. Without the 'stupid' part in there, some
people would claim that elegance and
+simplicity are strongly related, and so their 'elegant' design should be
implemented.
+
+But no, it doesn't matter how elegant it is. If the coder can't understand
exactly how to do it, it's not KISS. A less
+elegant design, one that is simple and stupid, should be used instead.
+
+So that's it I guess: if the implementer finds it very very easy to do, then
it's KISS. If they don't, it's not.
+
+This can be related back to game rules somewhat. One of the aims of Wesnoth
was to make a game with a pretty good AI.
+One of the things I noticed about other games, was that they added in alot of
game rules that their users wanted, which
+were very very difficult for the AIs of those games to use or understand.
+
+So, I decided I'd make a game where the rules were detailed enough to be fun,
but structured in a way that the AI can
+work with them.
+
+I think that's the best definition of KISS for game rules that we will find:
if it's very easy to implement, including
+making the AI use the rules effectively, then it's KISS.
+
+This makes most but not all of our current game rules KISS. In particular,
special abilities involving auras
+(leadership, healing, illumination) are not currently used at all effectively
by the AI. It might not be so complicated
+for the AI to be able to use them though.
+
+Things like skirmish are very KISS, since the AI immediately understands how
to use it effectively.
+
+You'll note that originally, when Wesnoth consisted of no multiplayer, and no
campaigns other than Heir to the Throne,
+it was structured so the AI would only control units that it can use
effectively: it didn't have access to any aura
+effects, while it did have access to things like poison.
+
+This is the cornerstone of KISS: what is laughably easy for a programmer to do
is going to result in high quality,
+bug-free software. What is 'simple' for users, or 'elegant' for designers, but
not easy for a programmer is not going to
+result in high quality software.
+
+David
+
+
+||Wesnoth Philosophy II||
+
+||What's next?||
+
+I've been asked by Steelp (and others) to write something on where we plan to
take Wesnoth next. So here is my opinion
+on where we should take Wesnoth next, as at version 0.8:
+
+I am now happy with Wesnoth's game rules. I think it is a good, fun, simple,
and addictive game. A game that is fun to
+play, and challenging.
+
+I don't think we need any more game rules, or any game rule changes. The game
has met and exceeded most of its original
+design goals.
+
+We have met many challenges during Wesnoth development, but we now have a new
challenge: making Wesnoth a polished and
+high enough quality product to declare it 1.0, and show it to 'the world at
large'.
+
+I think that we have a very real chance of failing. That we can continue
adding features, debating changes, going
+sideways, and end up with a product that is too large, too bloated, too
unstable to make it to 1.0. With a development
+team that is too burned out on adding features and debating insignificant
changes to polish and debug the program
+enough.
+
+I think we have to accept that version 1.0 need not have every feature
imaginable. That we will in fact have to leave
+out good ideas in order to deliver a finished product.
+
+I want to start moving aggressively toward a version 1.0. I think the longer
we delay, the more developers and users
+will become frustrated at slow progress. My feeling is that the time is now to
finish off all engine features, or decide
+that they will be left until after 1.0.
+
+IMO the engine is now feature-complete enough for a 1.0. It'd be nice to add a
few more features, but it has enough
+features to ship a 1.0 already. gettext support would be especially nice, but
I don't think it's absolutely necessary.
+
+I think that I would like to declare a feature freeze sometimes within the
next few weeks. Features that are not added
+in this time will have to wait until after 1.0. I think we've been waiting
long enough for this already, and I am
+unwilling to wait much longer. We have stayed in the very dangerous '90% done,
10% to go' state for far too long now. It
+is time to move toward 1.0.
+
+To ensure that 1.0 is a stable program, we will take a number of measures. We
will have a fairly long beta-testing
+period, in which time bugs will be hunted down and squashed. We will take a
more rigorous approach to squashing every
+minor bug we can find than previously.
+
+During this time, campaigns will also be completed, as will graphics, sound
and music. Translations will be finished,
+documentation written, and balancing done.
+
+I will discuss this further with developers, but IMO, campaigns that are not
completed by 1.0 should be removed for the
+1.0 release. 1.0 should be an entirely finished product, with no 'loose ends'
at all.
+
+After 1.0, I still don't think that we will have too many game rule changes.
However, I would like to put some effort
+into making Wesnoth more flexible, to allow people who want to make forks to
make their own projects.
+
+Personally, I am mostly committed to getting the project to 1.0 at the moment.
After that, we can decide what will
+happen next.
+
+David