Jump to content

  • Log In with Google      Sign In   
  • Create Account

Peppit

Member Since 12 Apr 2013
Offline Last Active Jul 19 2014 05:15 PM

Topics I've Started

Linux development workflows?

19 July 2014 - 05:11 PM

I'm sort of curious if anyone here develops on linux, and if they do, what do you use? Does anyone use vim/emacs as their "IDE"? How much boilerplate did you have to write?


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

09 April 2014 - 06:12 PM

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.


Creating an "engine" with SFML: Is it worth it?

26 June 2013 - 07:23 AM

When I first messed around with making games, I had used GameMaker. The way that game maker is organized is you create objects, code their behavior, and put them in a room and run the game. Now I've moved on to C++/SFML. I am I just started on a way to organize sounds/images, but it involves running a python script to update a resources.h file that maps sprite IDs to resource paths. It seems to me that I'll need to do something similar for objects, scenes, etc. and it seems really hacky/a lot of work. Is this the normal way that people develop 2D games? Or do they generally just hardcode paths to sprites whenever they need to/something else? Any help would be appreciated.

How do you implement level editing without a GUI editor?

19 April 2013 - 01:33 PM

I'm starting to get the hang of C++/sfml, but I want to create a more complex game that doesn't just toss enemies at you randomly. For your games, how do you implement your levels? I would rather not have to do a bunch of create_object() calls since that would require calculating the x/y of EVERY object. All I can think of is either creating my own GUI or parse a text file that looks something like:

 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X----------------------------X
X-k-X----------------1-------X
X---XXXXXXXXXX---1-----------X
X---X-.----------------------X
X---XXXXXXXXXXXXXXXXXXXXXXXXXX
X---X------------------------X
X---X-^------1------o--------X
X---X------------------------X
X---X----------1-------------X
X----------------------------X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

X=obj_block
1=obj_monster
.=obj player
k=obj_potion
^=obj_goal
o=obj_bigmonster

and writing a program to parse that into create_object() calls. The only problem is that this prevents me from adding extra info to any monsters (then again, I could probably add a new symbol and make a way to add extra code to it...).

 

Anyways, I'm curious what other people do.

 


Finding a cross-platform, easy to use language

12 April 2013 - 11:56 AM

I know this probably gets asked a ton, but I still haven't found a good answer from the tons of articles/posts on the topics that I have read. I'm really not sure which language to use to start developing games. To start off, I'm obviously going to make some 2D games. There are quite a few options for 2D engines, but I can't decide on which one to use. On top of that, I need a cross-platform option since I strongly prefer to develop/test on a linux machine.

 

Anyways, here are the languages/libraries I have looked at:

 

C++/SFML

Pros:

  • I use C++ for my classes so developing in C++ could help my academics too
  • Getting better at C++ could help my career options

Cons:

  • C++ can really suck to debug
  • You have to manage a lot of extra stuff in C++
  • Compile times

Python/PyGame/Pyglet

Pros:

  • Python is a great language and easy to program in

Cons:

  • Distributing python programs to windows is tough
  • It's difficult to "lock down" python programs and prevent people from having the source
  • I really have no idea how to make sure that the distributed game has all the dependencies met

Java

Pros:

  • Easy to distribute
  • "Enterprise" language that could translate to career skills

Cons:

  • I've never programmed in java before
  • I'm not sure how the performance is for games (minecraft horror stories)
  • I would have to learn Eclipse, which from what I hear is almost mandatory for java

I know that I should just pick whichever one I'm most comfortable with, but I'm not especially comfortable with any of them. And on top of that, I would be happy if I could translate any skills I learn to a career. I would really appreciate any advice.


PARTNERS