Want to become a developer. Where to start?
Moderator: Forum Moderators
-
- Posts: 8
- Joined: May 9th, 2011, 6:25 pm
Want to become a developer. Where to start?
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.
Re: Want to become a developer. Where to start?
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
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!
Re: Want to become a developer. Where to start?
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.
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 Bestiary ( PREVIEW IT HERE )
Unit tree and stat browser
Canvas ( PREVIEW IT HERE )
Exp. map viewer
Unit tree and stat browser
Canvas ( PREVIEW IT HERE )
Exp. map viewer
- Pentarctagon
- Project Manager
- Posts: 5564
- Joined: March 22nd, 2009, 10:50 pm
- Location: Earth (occasionally)
Re: Want to become a developer. Where to start?
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
take one down, patch it around
-2,147,483,648 little bugs in the code
- Viliam
- Translator
- Posts: 1341
- Joined: January 30th, 2004, 11:07 am
- Location: Bratislava, Slovakia
- Contact:
Re: Want to become a developer. Where to start?
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.
"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.
- Viliam
- Translator
- Posts: 1341
- Joined: January 30th, 2004, 11:07 am
- Location: Bratislava, Slovakia
- Contact:
Re: Want to become a developer. Where to start?
I'll try to address your questions closely.
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.
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.)
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:verylovelydd wrote:Hi, I always wanted to create my own game, but I really don't know anything about computer.
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.
There are many ways, and everyone will recommend something else. This is one of the possibilities, step by step:verylovelydd wrote:Where can I start and where should I start?
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.)
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.verylovelydd wrote:And where can I learn the beginning of WML? And can WML be used in developing game?
- dipseydoodle
- Posts: 879
- Joined: September 16th, 2008, 10:26 pm
Re: Want to become a developer. Where to start?
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.
Re: Want to become a developer. Where to start?
I disagree. Do NOT pick up a C++ programming book, it is very complicated and pretty much unsuitable for beginners. Follow Viliams advice.
- Viliam
- Translator
- Posts: 1341
- Joined: January 30th, 2004, 11:07 am
- Location: Bratislava, Slovakia
- Contact:
Re: Want to become a developer. Where to start?
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.)Unnheulu wrote:Do NOT pick up a C++ programming book, it is very complicated and pretty much unsuitable for beginners.
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"
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
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
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).