• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
Peppit

Finding a 2D game engine that does not require programming in their environment

12 posts in this topic

I'm a somewhat experienced programmer (Junior CS major in college) and when I was younger I used to be EXTREMELY into game development. However, my engine of choice was GameMaker, and as we all know that's a bit limited. After becoming a better programmer, I decided I wanted to come back and make some simple 2D games using a real language. However, I haven't been able to find a good 2D engine that lets me develop in my own environment; almost all of them require me to use their own special scripting language or require me programming most of the engine myself. What I would like in a engine is:

  1. Programming is done in my own environment (emacs, vim) in an established language (like C++ or Python)
  2. I can quickly program objects (engine handles things like collision, creation and destruction of objects and scenes, etc)
  3. I can quickly place objects and design levels (I would really like to be able to use tiled to design my levels)
  4. It handles input and is easy to integrate in objects
  5. Built-in collision detection

Bonus points for:

  1. Physics
  2. Android/iOS/HTML5 support

The closest I have found to something I would like is melonjs, however I really don't like programming in javascript and it doesn't compile to native code (not that I would expect it to).

 

In an ideal world, I would like to make a simple pong game with something like this:

import engine
import sprites
import scenes

class PlayerPaddle(engine.GameObject):
    sprite = sprites.PaddleSprite
    game = 0;

    def __init__(self, game):
        self.game = game
        game.add_object(self, 'PlayerPaddle') # could be handled by parent
        self.x = 0
        self.y = 0
        super(PlayerPaddle, self)

    def update(self):
        if (self.game.input.keyboard.up):
            self.y -= 2
        
        if (self.game.input.keyboard.down):
            self.y += 2
        super(PlayerPaddle, self)

    def draw(self):
        engine.draw_sprite(self.x, self.y, self.sprite)
        super(PlayerPaddle, self)


class ComputerPaddle(engine.GameObject):
    sprite = sprites.PaddleSprite
    game = 0

    def __init__(self, game):
        self.game = game
        game.add_object(self, 'ComputerPaddle') # could be handled by parent
        self.x = game.current_scene.width-32
        self.y = 0
        super(ComputerPaddle, self)

    def update(self):
        if (self.game.objects['ball'][0].y > y)
            self.y -= 2
        
        if (self.game.objects['ball'][0].y < y)
            self.y += 2

        super(ComputerPaddle, self)

    def draw(self):
        engine.draw_sprite(self.x, self.y, self.sprite)
        super(ComputerPaddle, self)

class Ball(engine.GameObject):
    sprite = sprites.BallSprite
    game = 0

    def __init__(self, game):
        self.game = game
        self.hspeed = 5
        self.vspeed = 5
        self.x = game.scene.width/2
        self.y = game.scene.height/2

        game.add_object(self, 'ball') # could be handled by parent
        super(Ball, self)

    def update(self):
        if (engine.collides(self, game.objects['PlayerPaddle'] or
            engine.collides(self, game.objects['ComputerPaddle']):
            hspeed = -hspeed

        if (y < 0 or y > game.current_scene.height):
            vspeed = -vspeed

        super(Ball, self)

    def draw(self):
        engine.draw_sprite(self.x, self.y, self.sprite)
        super(Ball, self)


game = engine.Game()
game.set_scene( scenes.scenes['pong'] )
while (game.is_running):
    game.update()
    game.sleep_off_frame()

I REALLY rushed through this so the python is definately wrong (and I'm not spectacular at it), but I think you get the general idea. 90% of the code is defining the behaviour of the objects, and the engine itself handles things like drawing the sprites, view locations, collisions, input, object movement, etc.

 

What I have tried so far:

  • GameMaker
    Pros: Easy to get a basic game down, handles resources for me
    Cons: I have to program in their limited language, not open source, stores projects in a way that I can only really use gamemaker with it, can't develop on linux
  • MelonJS
    Pros: Does about what I want
    Cons: I have to program in javascript which I really don't like, web only
  • Roll my own with SFML (I am actually decently far into my own game engine, but I want to actually make games now)
    Pros: Does exacly what I want
    Cons: Extremely hard, buggy, takes forever, I have to write my own algorithms for everything and develop my own tools, unfeasible
  • Unity
    Pros: Established community, good engine, compiles for everything I could want
    Cons: Can't develop on linux, basic 2D support, I have to learn how to use the entire program

I know this is a really really common question, but I still haven't found a good engine for what I want, even after reading FAQs, etc. I would really appreciate some help.

Edited by Peppit
0

Share this post


Link to post
Share on other sites
Sorry answer: c++\sfml, this is a great library for c++. Or unity for less coding but allows c++ scripting.

Long answer comming. No time now ;)
0

Share this post


Link to post
Share on other sites

Give those a look:

 

 -  Angel http://angel2d.com engine in C++, scripting with Lua. It's main focus lays on prototyping. Supports mobile,

Win, Mac, Linux.

 - Urho2D https://github.com/urho3d/Urho3D Primarily a 3D engine, but they recently started doing some 2d stuff too. The advantage here is that you pretty much have everything covered, in my eyes it is one of the best open source engines right now. Engine is written in C++, scripting is done either vie Lua or Angelscript. Supports mobile,

Win, Mac, Linux and Raspi.

 

Cheers!

Edited by theslimde
1

Share this post


Link to post
Share on other sites

Unity3D. It supports C#.

 

Or. if you're willing to pay, Unreal Engine 4 uses C++.

 

Edit: Ok, so I'm a poor reader. UE4 is 3D. But Unity can also do 2D, despite its name. Add Duality to that (it's another C# 2D engine).

Edited by Truerror
1

Share this post


Link to post
Share on other sites

I personaly like ORX a lot, it is a 2d engine that uses C (there is a C++ set called Scroll).

 

The whole lib is based on writting code and ini files to describe your objects. After you get the grip of it you can develop some cool effects quite fast.

 

As for the bonus:

- There is a community made Tiled exporter (the exporter works only on windows AFAIK).

- It can create binaries for linux, windows, OSX, IOS and android.

- It uses Box2d for physics.

0

Share this post


Link to post
Share on other sites

To add to the others

PyGame? It's python like you requested.

Monogame, though thats C#.

 

Unity doesn't allow C++ scripting that I know of.  (Not that I've looked hard for a way to try)

Edited by ferrous
0

Share this post


Link to post
Share on other sites

Unity3D. It supports C#.

Unity doesn't allow C++ scripting that I know of.  (Not that I've looked hard for a way to try)

The last I knew, you could only use the C/C++ bindings for Unity if you had the licensed version (for $3k or whatever it was) otherwise you could use C# (or Boo or Javascript I think) inside their editor...which is what the OP doesn't want I think.

Has this changed with the new licensing structure? (The update with the per/month fee?)
0

Share this post


Link to post
Share on other sites


The last I knew, you could only use the C/C++ bindings for Unity if you had the licensed version (for $3k or whatever it was) otherwise you could use C# (or Boo or Javascript I think) inside their editor...which is what the OP doesn't want I think.

 

Well, the OP said

 

 

  1. Programming is done in my own environment (emacs, vim) in an established language (like C++ or Python)

 

He said 'like', so I assumed what he meant 'established language' is something that is thoroughly popular, with complete documentations, and thus a huge community support. I might be wrong in my assumption, but if I'm correct, then I believe C# fits the bill.

0

Share this post


Link to post
Share on other sites
I would recommend having a look at Moai,

http://getmoai.com/

it does everything you want, runs on all platforms imaginable, open source so you get all the C++ code.

I hadn't paid attention to it for a while and I just had another look recently and it looks like it has come a long way.
0

Share this post


Link to post
Share on other sites

I suggest LOVE2D...

 

Its a really nice 2d engine... you must have to program in LUA script, but its very versatile and the 'code style' is somewhat like what you want.

 

I did use the Love2d in a GameJam this year... and.. its very friendly... have a lot o documentation, is cross platform and have a good performance.

 

Give it a try - https://love2d.org/

 

I too recommend Love2d.

For physics, you can write your own or it provides you with bindings to Box2d (although the tutorials on the wiki are a bit lacking I find), and for graphics you can write shaders in a slightly modified GLSL (afaik the syntax is the same but some names changed). I haven't found many tutorials, but there is good documentation on their wiki and example code (including a Tiled map loader). I also don't know about running it on mobile or the web, but it runs on windows, mac and linux and you can code in any editor. Love2d was also used in this awesome game, Mari0.

 

Lua's also a pretty good language. Quite fast and lightweight compared to other scripting languages like Python, but its standard library is quite small. I personally prefer to use Moonscript though (it compiles into Lua).

Edited by dr01d3k4
1

Share this post


Link to post
Share on other sites

Have you looked at Duality? Granted the language is C#, but a cursory glance at its features suggests it might fit your needs.

 

Edit: Actually it seems to have been made with Visual Studio in mind, but perhaps there's a way to bypass that and just build with compiler?

Edited by reflect
0

Share this post


Link to post
Share on other sites
  1. Programming is done in my own environment (emacs, vim) in an established language (like C++ or Python)

 

You transcend the editor wars by using both... thats awesome ;)

 

I highly recommend SDL 1.2 (with C or C++) because you can also use the Emscripten compiler to output it to HTML5.

 

If you plan to do very intensive 2D games, then SDL with OpenGL will also work great as a desktop application or web via Emscripten.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0