I'm learning game development, i was looking for a nice api/framework for java, but then i decided that c++ would be better, at least for me.
I looked into SDL but it looked like too low-level. I mean, i liked it and it wasn't so hard, but somebody said me that i should start with an engine, at least for my first game.
I personally don't like engines, so i thought i should use another api. SFML looks good, but i heard it is less flexible(and sdl style of "SDL_FUNCTION" is nicer than "SF::FUNCTION" xD). What would you recommend?
The point is, I feel comfortable with sdl, but I'm a newbie in terms of games(i know c++ very well). Is it worth it to start programming a game with sdl/sfml or should i go with an engine?
I feel like I could make it without an engine but people say "don't reinvent the wheel". What i mean is: i like sdl(i read a little a bout sfml too), and i don't want a framework to take care of everything for me. But most people recommend using an engine. What should i do?
Use SFML. Easy to use, understand and great documentation. Also has a lot of flexibility, for example if you want to start doing 3D stuff, you can use SFML to set up your environment for OpenGL which is usually a pain in the ass otherwise.
SFML is basically the C++ version of SDL.
It really depends, if you just want to make the game then I would go with the engine, but if you want to know what going on in the background then I would make a engine. But writing your own engine is quite complicated and you would most likely spend more time making the engine then the game.
As BlackSheep said, if you want 3D graphics, then you'll also have to use another library and implement that into your engine. As well as managing data, I/O, audio, collision, networking, ect.
I'm planning a sidescroller with 2d graphics, i just think that a game engine wouldn't help me understand what's going on. Bascially, what i mean by making a game is creating something from scratch(at least, from a very low level). My problem is that I don't know anything about linear algebra and it could be very hard and frustrating. I think I'm going with sfml and switch to sdl only if I'm ver uncomfortable with it.
Same applies. A engine is basically a interface on top of existing libraries.
Taken from the SDL site.
Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.
So you can picture using SDL / SFML to handle your window creations and input events, OpenGL to handle graphics, Havok for physics and so on.
Hmm I'm not too familiar with any 2d engines. When I started programming I used Game Maker, which had it own scripting language which was similar to C++.
Torque 2D might be of interest, I never used it but I think they also have their own scripting language. And I'm not sure about it licensing, as far as I'm aware they went open source with their engine a while back.
For engines such a unity and unreal, I though that if you made a certain amount of profit with their engine, then you have to pay royalties, or you pay x percentage of your profits but I may be wrong about that.
If you just want to make a side scroller and you want to learn about making games I would recommend making it using your own code on top of whatever media library (SFML/SDL/etc) that you plan on using. Don't bother trying to create your own engine, as without experience actually making games you wouldn't really know what to put in it, how to structure the interface, etc. Just write the game itself in a way that feels natural to you. Learning the underlying mechanics behind games is important if you do plan on one day writing your own engine, and are also helpful when using existing engines as well.
I was not talking about creating an engine, i was asking if i should use and api or an engine. I feel like for a big project(of course i am gonna start with smaller games, just saying) an engine would be more suitable. But i can't find a free engine that lets you write code instead of just scripting.