Did anyone use Mobile Robotics Programming Toolkit? What do you think about it?
I am currently studying the SLAM problem (I am quite new in this area) and I am planning to implement a Mono Slam solution based on Extended Kalman Filter (C++). Do you recommend to implement my solution on top of Mobile Robotics Programming Toolkit, or it would be better to start from scratch?
Well, I'd say it depends. Why would you use it? Does it provide anything special that you need, like feature extraction or visualization? Since it's for learning purposes, I'm assume their monoslam implementation is of little interest.
If not, why bother? Once you have your measurements, you pretty much only need a decent linear algebra library. I recommend Eigen; it's easy to use and does everything you need.
Disclaimer: I haven't actually used MRPT.
FYI, Eigen is also included in MRPT. I am starting to use MRPT as well. It's quite a good tool for SLAM beginner->advanced I think.
I have programmed in c and I know about data structures and algorithms, but It has been a while since I programmed in c. I forgot things like how function pointers and some advanced stuff in c work. I want to try graphics programming using sdl. my question is how much of c should I know (for example should I know function pointers) before getting into this. Or in other words will I be stuck if I dont remember a lot?
I think basic knowledge of C should be enough. Look for some SDL tutorials and follow them closely, you will refresh your knowledge of C and at the same time learn how to use SDL. It might go a little slower at first, but you will get into it.
Try for example: SDL Tutorials
Or: GPWiki SDL tutorials
Or: Lazy foo
The first one offers also C tuts. As for functions pointers, you might need them later, when you get to the more advanced stuff. With the basics, you will see everything in tutorial source code and believe me it is easy to understand.
If you like books, try: Focus on SDL
Dont know if there are better ones.
I see PeterK posted lots of good stuff, but I figured I'd throw my two cents in as well. When I started using SDL (3-4 months ago), I had a little experience in Java and no experience in c/c++. Using LazyFoo's tutorials (http://lazyfoo.net/), I was able to get up to speed very easily. I would recommend it to anyone who wants to learn SDL.
I would like to write some simple Mario-like game from scratch using language C. But honestly I have no idea how to do so, and I canĀ“t find any good tutorial for this, which is for free.
But to the actuall question, I have only written WinAPI programs so far, so all event handling and user input was handled by OS, with minimum work, But to develope game, with for example menus with non-rectangular buttons, animations, and so, I guess, there is no such thing in WinAPI taht could help me with this more than just some basic routines mouse pointer location and keypresses.
So, is the right way to write your game to write entire draw part of game engine by manipulating objects for player, enemies, and even background yourself, and than just use directdraw for output to screen?
EDIT:
I actually want to learn how to write games from scratch, becouse it must be great programming experience, and if you consider games like Commander Keen on DOS, created with no framework or libraries, but still so great.
A good approach to this would be to have a look at the SDL library. I'm not saying it's necessarily the best library for 2D games, but it's easy to get started with and the web is flooded with tutorials and open source code samples for simple homebrew 2D games written using SDL.
I do recommand the SDL too, but you should definitely have a look on lazyfoo tutorial, which is just great.
When I started programming I started doing it with Allegro, back in the good old DOS days. It was the first usable library which worked with SVGA libraries, and had a good sprite support. Then version3 came and they added support for windows (using GDI and Directy X, you could choose at runtime which engine to use). The linux port came to life, and all is good.
It's a very basic 2D library, and it will teach you the very basics of graphics and animations. Now it even contains audio support which is a very needed addition (well, I still remember V 2.9X...). They are in betas for version 5, and I think this is an interesting project for you to look into.
http://www.talula.demon.co.uk/allegro/
What are you guys talking about, the WinAPI has low level drawing routines.
Although using an established library like SDL is probably a better idea you could create your own abstractions to the WinAPI drawing routines without too much difficulty.
Then it's just a matter of creating the while loop that has all the drawing instructions and interpreting input. For 2D games this isn't too difficult.
I also used SDL, but try to look at HGE. It requires at least DirectX 8.0 so your applications will work only on Windows but on their forum you will find many topics on how to port it to OpenGL. In my opinion HGE will be easier to learn than SDL, because SDL is a low level library and you will have to learn how to handle many things by yourself. HGE is more ready to start just out of the box.
In short, yes - there's nothing in the WinAPI that will help you much. However, there are dozens of game engines that you could build your game on that would take a huge amount of gruntwork out of creating the game itself. A bit of Googling will help you.
(Personal recommendation: although it's technically a 3D engine, something like Unity is an excellent engine that includes tutorials for creating 2D games. Unity isn't C, but it does make your life a lot easier...)
EDIT: I actually want to learn how to write games from scratch, becouse it must be great programming experience, and if you consider games like Commander Keen on DOS, created with no framework or libraries, but still so great.
This is actually not quite right. Commander Keen (and any DOS games) do use libraries: the ones provided by DOS, BIOS, etc. Without libraries of one form or another, you wouldn't be able to do anything useful with C. For game programming, you really do want to leave all the low level details to someone else.
I'd recommend Allegro as a beginning game programming library.
Check out this one Game dev starting
They have realy a big resource related to game programming and a lot of beginner stuff. SDL is good, but you should consider about learning basic game techniques before start coding and even before start thinking about the api/libs you use.
Clear out how much "intelligence" you need (Ki), consider about loading/Saving a an early time, ... so much things that you should keep in mind if you want to finish your project.
Do you need a game editor? (Also..work) What about sound/graphics? Writing all this stuff on your own will take a lot of time (if you do not have experience). Creating the content is another big issue which can consume a lot of time, if you make it at all.
Maybe it will help you to have a look on some dev kids, because that will give you the idea how their engine works. Like this one (outdated) Dev kid
I've just started a similar project a few days ago, you can check it out over at GitHub.
It should give you some ideas about how the game is structured. As well as some details on a scrolling 2D map with collision (which turns out to be quite complicated if you want to get it 100% bug free). Oh, and it's using SDL as many here have already suggested.
As for me, this is my first C project. But I'll have to admit that I've done similar stuff in Java and Python before, so this was a good way for me to quickly learn C. And since it's learning and not any productive stuff, I'm using plain C99, which makes the task even "funnier".
But back to the game, you really need to think about your design before you start coding, write it down on a sheet of paper, or if you're like me and you don't have tree stuff in reach write it in pseudocode.
Think about as many possible game states as you can, nothing's worse than having to re-implement the whole player/map/whatever stuff from scratch just because you did not think about feature XYZ before.
Design is very important, if you don't have a goal to begin with, your project will reach a point where it fails, just like my Tuff did, well it also failed due to missing music and somebody who would have designed enemies, etc.
Speaking of graphics and such, bear in mind that the game will consist of much more than just the plain code. If you aren't good in graphics then take that into account while designing. Because you will quickly lose your motivation when the only things on the screen are colored rectangles.
Action Arcade Adventure Set (originally published as a book) is probably one of the most complete tutorials on how to write a 2D side-scrolling game. Although an older reference, many fundamentals for developing a 2D side-scroller have not changed.
Full source code examples and some tools to develop a side-scroller are provided as downloads. There is only one external library used to handle graphics primitives. As this is an older DOS program, you may have to use a DOS emulator like DOSBox or modify the examples for more modern environments.
I suggest you skim chapters 1 to 9 and focus on chapters 10 to 17.
I'm looking for some tutorials which can teach about graphics on C, I tryed find it, but all I can find are discussions about special topics, I'm beginner, thanks in advance
What platform are you trying to work on?
And what are you trying to achieve? "Graphics" can be a lot of things. Are you trying to work on game type stuff? Are we talking 2d or 3d here? Is it image manipulation or just displaying them?
OpenGL and DirectX will let you do pretty much anything you need to do and interface directly to the hardware drivers, but may well be overkill for many things.
SDL
Cairo
If you need something more specific than those then feel free to ask a more specific question.
During the last 2 months I've been trying to learn the basics of game programming. So I coded a few simple games in Java to learn the fundamentals, such as Tetris, Checkers and Pac-Man.
Now I want to learn/improve my skills in C, so I have this idea of writing those games in C to learn more about memory management, no OOP, etc. I have done basic C programming before but never with graphics, so I don't know where to start.
Which libraries should I use to write simple 2D games in C? GTK+? Cairo libraries? Any tutorials you can recommend? Graphics libraries?
Thanks
I would recommend using the SDL graphics libraries, there are some pretty good tutorials and demonstrations here... http://www.libsdl.org/ and for tutorials here... http://www.sdltutorials.com/ Hope it goes well!
Doing some openGL with glut is a good place to start in my opinion, as it allows you to do both 2d and 3d graphics.
http://www.opengl.org/resources/libraries/glut/glut_downloads.php
If you want another layer to help you with various parts of game programming (keyboard and mouse events, sound, etc..) you can use SDL with openGL.
http://osdl.sourceforge.net/main/documentation/rendering/SDL-openGL.html
There are lots of tutorials around the web to help get you started.
If you want to do C game development, OpenGL with glut is a good start..
The red book is your friend!!
Although the following are not 2d; as everyone is mentioning 3d i might add the following libraries; they are open source libraries for 3d engines.
Ogre is a pretty popular open source graphics engine. "Torchlight" was written in it, and so was "A tale in the Desert". Also the unreal engine has gone open source.
A 2D library that just crossed my mind and is amazing to use is Quartz from OSX. The tools are pretty damn good as well. You'll have to learn some Obj-C though, but its a nice language.
As someone mentioned you need some key Math skills to move up in the game programming world. I don't know how much is involved in animation and modelling since tools are available, but to write engines of any sort Linear Algebra is involved; this applies to 3D programming and it might be involved in 2D Opengl. Gilbert Strang's introductory book on Linear Algebra is amazing. Mit opencourseware also has an entire semesters worth of lectures available by Gilbert Strang on Linear Algebra. You can download them directly from Itunes or on the web.