Want to become a developer. Where to start?

Discuss the development of other free/open-source games, as well as other games in general.

Moderators: Forum Moderators, Developers

Post Reply
verylovelydd
Posts: 8
Joined: May 9th, 2011, 6:25 pm

Want to become a developer. Where to start?

Post by verylovelydd »

Hi, I always wanted to create my own game, but I really don't know anything about computer. Where can I start and where should I start? And where can I learn the beginning of WML? And can WML be used in developing game? Thank you very much.

User avatar
Crendgrim
Moderator Emeritus
Posts: 1328
Joined: October 15th, 2010, 10:39 am
Location: Germany

Re: Want to become a developer. Where to start?

Post by Crendgrim »

The term "developer" refers here in Wesnoth to the people who are doing the core engine (which is written in C++), the tools (Python etc.) and such stuff.
I think if you don't know much about computers, becoming a "Coder" is the better way for you to start - e.g. becoming a WML coder. If you want to become such a person, you should head for the "Create"-section of our Wiki (follow the link at the top of this page). It's not that hard to learn. Just dig into it and if you have got trouble - come and ask here in the WML Workshop. :)


Crend
UMC Story Images — Story images for your campaign!

User avatar
ancestral
Developer
Posts: 1108
Joined: August 1st, 2006, 5:29 am
Location: Motion City

Re: Want to become a developer. Where to start?

Post by ancestral »

Admins, move this to Game Development?

verylovelydd, getting started with understanding computer programming and learning a programming language is probably the first step. I feel like the question has been asked before; check to see other threads on the boards.
Wesnoth BestiaryPREVIEW IT HERE )
Unit tree and stat browser
CanvasPREVIEW IT HERE )
Exp. map viewer

User avatar
Pentarctagon
Forum Administrator
Posts: 4231
Joined: March 22nd, 2009, 10:50 pm
Location: Earth (occasionally)

Re: Want to become a developer. Where to start?

Post by Pentarctagon »

Moved
99 little bugs in the code, 99 little bugs
take one down, patch it around
-2,147,483,648 little bugs in the code

User avatar
Viliam
Translator
Posts: 1341
Joined: January 30th, 2004, 11:07 am
Location: Bratislava, Slovakia
Contact:

Re: Want to become a developer. Where to start?

Post by Viliam »

OK, guys, this is so much Frequently Asked Question, that it probably deserves a wiki page where we can link whenever there is a need. We can still discuss specific details in forum that can be added to wiki later.

"Python or Perl?"
"How to learn developing?"
"What was your first Programming Language"
"What programming language do you prefer?"
...and I am sure there were many more topics; feel free to add them here.

I guess there will never be consensus about which is the best first language. So the best we can do is probably propose multiple paths. For example Python path, Java path, C++ path, etc. We will not agree about which path is the best -- and it probably depends on external things, such as which language do they teach at your school, or which language your friends use. However, I think for each path we could mention pros and cons, and recomment good learning resources, and good tools. (For example for Java path I would recommend Eclipse development environment.)

For total beginners, there are programming games:
Light-Bot
Light-Bot 2.0
Manufactoria

There are tools for making games very easily; but still they are not just level editors, they teach some aspect of coding:
Ren'Py -- can be a starting point towards Python

If you know similar resources, please add them here.

User avatar
Viliam
Translator
Posts: 1341
Joined: January 30th, 2004, 11:07 am
Location: Bratislava, Slovakia
Contact:

Re: Want to become a developer. Where to start?

Post by Viliam »

I'll try to address your questions closely.

verylovelydd wrote:Hi, I always wanted to create my own game, but I really don't know anything about computer.
If you literally do not know "anything about computer", then maybe before making games you should try some simpler tasks which may be later useful. For example:

Learn how to use a graphic editor. Understand the RGB color system, the difference between bitmap and vector graphics. Your game will probably use pictures, so the time spent painting it not wasted.

Recommended tools:
Tux Paint -- bitmap editor for total beginners
Microsoft Paint -- it's ugly, but it's everywhere
Inkscape -- vector editor (with export to bitmap, if needed)

Learn how to use a spreadsheet editor. Understand numbers, mathematical functions, text functions. In your game you will work with data, though in a different way. Especially focus on creating logical functions, the ones with: "if this, then do this, otherwise do this" (for example: increase the number by 5, unless the result would be more than 100 -- in that case give 100 as a result).

Recommended tools:
LibreOffice Calc (or Microsoft Excel)

The benefit of this way is that even if you would change your mind and decide that making games is too complicated, the graphics skills and spreadsheet skills are useful on their own.

verylovelydd wrote:Where can I start and where should I start?
There are many ways, and everyone will recommend something else. This is one of the possibilities, step by step:
Light-Bot -- just fun, to get a feel what programming is like
Ren'Py -- programming with training wheels
Python -- real programming language
pygame -- library useful for making games

My general recommendation would be: Do not run forward too quickly, before you really understand. Good understanding is better than an impressive result that you cannot improve. Do not just blindly copy examples found on web; read them, analyze them, understand them, try to make your own ones. Start with small projects; move to larger projects only when you mastered the small ones. Official manuals are often very good sources of information.

In Ren'Py you should learn the concept of variables and conditions. Demonstrate your knowledge by making a small game, then move on.

In Python learn to work with numbers, texts and other objects in memory. This may sound boring, while displaying pictures seems interesting. But in real programming, 99% of the work is processing data in memory, so this is the skill you need to master. (Position of objects = numbers in memory. Score, hit points, experience points = numbers in memory. Level items = numbers and/or texts in memory. Movement of object = adding and multiplying numbers. Object colision = comparing numbers. Saving and loading games = texts. Configuration files = texts. Etc.) Only when you can solve mathematical problems and make some operations with text in Python, move to PyGame for nice design.

Start with some simple graphical demos, such as a colored square on a screen which moves when you press a key. It is not enough if you find a code with google. You should be able to write your own code; otherwise you do not understand it yet. (Reading someone else's code is good. But you should read it, not copy it without reading.)

verylovelydd wrote:And where can I learn the beginning of WML? And can WML be used in developing game?
WML is a language for making campaigns in Wesnoth, nothing else. If you want to make a campaign in Wesnoth, start in our wiki. If you want to make your own game, independent on Wesnoth, WML is not for you.

User avatar
dipseydoodle
Posts: 872
Joined: September 16th, 2008, 10:26 pm
Location: The United States of America

Re: Want to become a developer. Where to start?

Post by dipseydoodle »

For scripting languages and Web App design there's always W3Schools. I've used it for many references and it never failed. WML is used in a few other games, SilverTree RPG for example and a Wesnoth MMO (What was the name?). In the future I plan to use WML in Wesnoth 3D. For Graphics I'd recomend Gimp, Inkscape and Pixen ( a pixel art program). Also try picking up a c++ programming book somewhere.
- Dipsey

User avatar
Unnheulu
Posts: 738
Joined: November 25th, 2007, 4:50 pm
Location: Cymru
Contact:

Re: Want to become a developer. Where to start?

Post by Unnheulu »

I disagree. Do NOT pick up a C++ programming book, it is very complicated and pretty much unsuitable for beginners. Follow Viliams advice.

User avatar
Viliam
Translator
Posts: 1341
Joined: January 30th, 2004, 11:07 am
Location: Bratislava, Slovakia
Contact:

Re: Want to become a developer. Where to start?

Post by Viliam »

Unnheulu wrote:Do NOT pick up a C++ programming book, it is very complicated and pretty much unsuitable for beginners.
There is a huge but frequently ignored difference between "learning to program" and "learning a programming language". In my experience, most books are good to learn a programming language if you already understand programming concepts. If someone already wrote a few non-trivial programs in Basic or PHP or whatever, then typical C++ programming book will work for them -- but then, so would Google. (If you know a book which does not have this problem, then please recommend a specific book. Picking a random C++ programming book in a shop will not work.)

Problem is, most books tell you how to use an if-then-else structure or while loop, but IMHO do not explain well when would you want to use it... besides obvious examples like "write a program that reads an integer from input, and then writes BIG if the integer is more than 10, or SMALL if the integer is 10 or less". They teach you programming structures, but not programmer's thinking.

-

If we compare it with math, there are multiple levels of math mastery. You start with mechanical skills, like:

Q: Compute 5×6.
A: 5×6 = 30

Then you make a more complex formula, which must be solved like a puzzle, for example:

Q: Compute (1 + 3) × (2 + 4)
A: We start with parentheses, that is 1+3=4 and 2+4=6, therefore (1 + 3) × (2 + 4) = 4 × 6 = 24

Then you teach to recognize the pattern in word problems, like:

Q: Two friends have five apples each. How many apples do they have together?
A: That is 2 × 5, which makes 2×5 = 10

If you understand the concept, you are able to discover it when it appears in the process. For example:

Q: You have a stack of four different cards. How many ways you can order this stack?
A: Well, there are 4 possibilities which card is at the bottom. Now, for each of them there are 3 possibilities for the next card... oh, "for each of them" means multiplication, therefore... 4 options for the first card, 3 options for next card, 2 options for the remaining two cards, that is 4×3×2 = 24.

And a very advanced level is when you can speak about the concepts themselves, like:

Q: An operation is commutative when A OP B = B OP A for any valid A and B. Tell me an example of commutative operation.
A: Multiplication is, because A × B = B × A for any A and B.

To be good at math, you need to understand all these levels. Of course you do not learn all levels at start, only gradually... but you should understand all of this before you finish high school, and probably even before you finish elementary school (you will not use the word "commutative" yet, but you will know that A×B = B×A).

-

I feel like most programming textbooks give you only the first of these levels. "This is how you write an IF-THEN-ELSE." "This is how you write a WHILE loop." "This is how you declare an object, its properties and methods." If you are already fluent in some other programming language, then this is probably all you need. (Unless the language introduces a new feature that did not exist in your previous language, and then you remain writing Pascal-style code in C++, or C++style code in Java.)

This would be a similar progress at programming: start with structures:

Q: Write "BIG" if the number is greater than 10, "SMALL" if it is 10 or less.
A:

Code: Select all

if NUMBER > 10 then
  write "BIG"
else
  write "SMALL"
Make larger blocks from structures:

Q: You have three numbers, write the largest of them.
A:

Code: Select all

if A > B then
  if A > C then
    write A
  else
    write C
else
  if B > C then
    write B
  else
    write C
Recognize the patterns in real-life situations, such as:

Q: How would you program a (single-player) card game?
A:

Code: Select all

create_cards
shuffle_cards
repeat
  select_card
  move_card
until game_over
At this level, it is possibly to actually program games. And the advanced levels would be like:

Q1: What is the average and worst-case difficulty of bubblesort and quicksort?
Q2: If your programming language does not contain WHILE loops (nor its variants, like REPEAT-UNTIL), is it possible to achieve the same functionality using only IF-THEN-ELSE and function calls? If the language does not contain IF-THEN-ELSE (nor SWITCH-CASE etc.), is it possible to achieve the same functionality using WHILE loops and variables?
Q3: Tell me an example of (programming) problem that cannot be solved by an algorithm.

-

I think that informatics is very young compared with mathematics, and this is why we yet do not have ready the tools for efficient and comprehensive teaching, starting at zero level, towards mastery level. Those of us, who can program, picked their knowledge from many different sources and thousand hours of diligent experimenting -- that is not what an average student will do. So we silently accept that programming is not for everyone, and that although many learn, only a few will understand. We would not accept the same success rate in mathematics, but unlike in mathematics, we do not know how to teach best.

If you learn from "XYZ programming" books, I recommend reading Algorithmic Adventures for a different point of view (written by a professor at Zurich university, who also gives "Open Classes" to 10 years old children).

Post Reply