   Some help for a noob with basic concepts!
  Hi,First off, I'm using C++ and Allegro. So I'm just learning Allegro, and I'm just okay with C++. I'm trying to make a game, and I'm just building onto it as I go, it's been really helpful teaching me about all this :D So my game is very simple so far: Blit the background and our sprite, sprite controls, when the sprite reaches the end of the screen change maps. So next I was wondering how I could make monsters and NPC. For monsters at first I would just want it to be if you touch it it dies(I'll make it complex later, I just want the basics first!) And for an NPC maybe something simple where you click it and a message pops up saying "Hello." So I'm not quite sure how to do this besides making a monster class and an NPC class which I've already done, they're just empty. Any help with figuring out how these would work or showing me where I can find some tutorials would be appreciated :)Also this will sound dumb but what exactly is a scripting engine? Will I need it?If you are planning to make an RPG, is a tile engine necessary, or can you literally just draw the maps(in photoshop, paint, etc.)Thanks :D   
  A scripting language is a set of code that your game interprets at run time.  It could be used to control what happens if the player enters a certain area, or if the player kills a certain NPC--pretty much any kind of game-specific detail necessary.  The purpose is to have gameplay or story elements not "hard coded" into the engine itself and have a reusable set of game tools.A tile engine isn't necessary.  Baldur's Gate doesn't use a tile engine.  It has a bunch of pre-rendered images, much like you're suggesting.  Though they do cut down on the amount of artwork necessary.  For collision detection you could still use a tile-based collision scheme, or simply another image describing collision information, black being where a player can go and white where they can't.For having GameObject class, a real rough way to do it is to give it a "draw" method and an "update" method.  Every frame, update it and draw it.  How it updates is up to you.  it could detect if the player is colliding with it and if so either call player->die() or player->takedamage(amt), or if it was clicked (a simple way to do this is if the player clicked the mouse over the object, either set a boolean saying that the object was clicked or give the class a "onClicked()" method), have it additionally draw a little message that says hello.  This is a real simple way to do things, though, and something like a message would usually be passed over to a GUI subsystem of sorts, but that is way beyond the scope of your experience level.Try making something simpler, too.  Space invaders, pong or tetris.  Or maybe my all-time favorite, snake.  Pong is potentially the easiest game you could ever make.   ;  So should a scripting engine be something I should be looking into getting?   ;  You probably don't need to worry about scripting languages at this point.You'll recognise when you need them, because you'll try and put something in a config file which needs "reasoning" applying to it.Eg:The defence value of this unit is 7 unless we're on level 12, in which case it's 10.;  Moving you to For Beginners.   ;  If you look on c++ workshop section of the forum the projects all built up to what you are doing (only text instead of graphic based).A very basic way of doing it is creating a Monster class that has an update() function that gets called every game loop update.  In this update function you check to see if the monster was clicked on or if the player touched him.  Example in psuedo://main loopwhile(gameRunning){    player.update();    monster.update();    player.draw();    monster.draw();}void Player::update(){    Move()    if(mouse click)    attack(monster);    if(position==end of screen)    Map.x++;}void Monster::update(){Move()if(mouse click && mouse on monster)    Dialogue Box ("hello")if(collisionWithPlayer())    monster.visible=false;}I did a mud project for the C++ workshop and I did something similar to this, with a linked list of "Monsters".  Every game loop the game cycles through all the living monsters and checks to see if they are in the same room as the player.  If they are, they become visible in the room.I strongly recommend reading through that workshop.  You can implement it in 2d instead of a console but it really progresses every project so you start off just doing a menu and battle system but you progress to doing an entire world with monsters, characters, rooms, and items.  The good thing about the way it was done is that it encourages you to think about the design of the game instead of just coding it as you go.  So you're not just adding one thing after another to a project but getting multiple objects to work together.   