Jump to content

  • Log In with Google      Sign In   
  • Create Account

Enders

Member Since 15 Dec 2010
Offline Last Active Sep 24 2013 06:36 PM

#4951154 Your first game idea - What happened to it?

Posted by Enders on 20 June 2012 - 05:21 PM

My first game i ever made was for a Book Report of ... cant remember the name anymore ...
  • What was the idea.
    • My first game i ever made was for a Book Report of ... cant remember the name anymore ... Anyways! It was made in QBasic and used a lot blit for bitmaps. It was a maze game that had 4 screens. You were tasked to go look for an item. Took me a few weeks to make as I was just learning programming. This was what? Year 2000?
  • How far did you get with it.
    • I completed it and got an A+ Posted Image
  • How did that game idea evolve as it transitioned into reality or fell short of being completed.
    • Interesting thing I did in college was I took the same game code and translated it into MS-Assembly. It was the same damn game! Even Screen 13 was the same lol.
  • What lessons did you learn on the way.
    • Nothing comes for free. You have to program everything.
  • What would the game be, if you revisited the original idea now and built the game with your current ability/knowledge.
    • If i was to remake that game. I would remake it as a user buildable dungeon. Then they can connect with other people to share their creations. hmm...not a bad idea. Hold on a sec while I sqribble that down. (Checks Google, oh looks like everybody else had that idea too)
My next game was when i was when i started college. I grabbed my notes from my highschool physics class and made a sun and two planets in VisualBasic. Plugged in a timer, and gravity code. One planet would shoot at another planet. Then it was WAR! Gotta watch out for that sun, it got in the way. Darn gravity. I am actually taking that concept and redoing it for tablets. Turns out it is a great way to play the game. Check out the engine Posted Image



oh. I thought of this before Angry Birds. It was 2003 at the time. I only now have the super knowhow to make it work and have a lot of fun stuff for it.


#4877367 New MORPG Project Thread. An 8-Bit MORPG Development Path. not an MMORPG yet :p

Posted by Enders on 26 October 2011 - 04:13 PM

Hi all.

Been working the last couple of weeks on an MORPG with 8Bit Graphics. In no way is it easy to program heh. I am programming it in Java and plan to release the client in Android. I feel that Android will give me a better player awareness also it will allow me to make the game free with paid content using the Android Market In App Billing API. Currently I am writing the base Client software in Desktop java for quicker development.

The Client/Server structure is setup so that each Client will have their own thread.

I do not have the "Game" part of the MORPG fully mapped out. But my general desire is to make it humorous. I plan on referencing older RPGs in a joking fashion.

My current Game Design goals are:

2 zones (maps) of 64x64 size.
2 zones of 128x128 size.
Several Starting quests.

4 Classes with Genders. Class names are as follows.
  • Tank - (The damage taker and high damage dealer)
  • Caster - (Nukes, spells, and support)
  • Healer - (Player Support. healing, reviving, and curing)
  • Rascal - (Fast attacking, stealthy skills)
I plan on having Paid classes that will combine abilities of the base classes with unique abilities

The game will be in 8-bit fashion. Graphics will liken to the days of Dragon Warrior on the NES. I am currently using DW graphics as Programmer art. I will replace with my own.

The logic code is mostly done on server side. The player requests an update on the current zone, and the Server will send the zone information. (Current entity positions)
The player will send to the server where they want to go in a zone. (/mov 0 0) via mouse click on a tile. The server will attempt to find a path to that point, and increment the player movements in the Game Loop on the server. Chat is done via zone as well. It will only send the message to the players in the same zone. most of the coding i am doing right now is the network code to make sure everything is working.

I am also looking to get feedback, ideas, and criticisms. (If you criticize, please follow with ideas on making it better :rolleyes:)

Below is a screen shot of my current progress.

Thank you :)



Posted Image


#4828071 Alpha Video of Project SM3, A Java Android RPG

Posted by Enders on 26 June 2011 - 08:04 PM

Hi!

How is everybody doing here. I have been hard at work on our current project. Been working on making a action RPG using isometric graphics. It has been a lot of fun! Right now I just have a town and the first dungeon type with only one monster. But it is getting there. :)

Below are pictures on the original game engine with some concept shots thrown in. The control graphics are just placeholders from our last game, Sigmore Mines 2 (SM2)

Even more below is a lastest Alpha version of the game. It is definitely not polished enough yet to my liking. But it is getting close. I have a basic projectile support in the game. So the fireball you see are just a projectile for now, not magic.

You can follow our game development at our website forum and our facebook page.

Posted Image

Posted Image

Posted Image

http://www.youtube.com/watch?v=9mqrr2rBrkc


#4821839 Can anyone explain to me the theory behind this Isometric calculation?

Posted by Enders on 10 June 2011 - 01:50 PM

Well, i am not sure about that calculation, but here is how I do it in my game.

to draw the tiles on screen, my tiles are 64x64

 
 // TileX and TileY are the array locations of the tiles.
 // TileWidth is set to 64 pixels wide.
 // TIleHeight is set to 32 pixels high.
 // The graphic tiles are 64x64
 
 // ScreenX and ScreenY is the location to draw the tile.
// OffsetX and OffsetY offset the drawn tiles to center the display.
 
 ScreenX = OffsetX + TileY*TileWidth/2 + TileX*TIleWidth/2;
 ScreenY = OffsetY - TileX*TIleHeight/2 + TileY*TileHeight/2;
 

going from mouse position to iso position was a little difficult to do. But I implemented a quick and dirty way of getting good results.


// TileX and TileY are the array locations of the tiles.
// TileWidth is set to 64 pixels wide.
// TIleHeight is set to 32 pixels high.
// The graphic tiles are 64x64

// In my game, i adjusted the mouse location so it will detect the correct tile that is under the mouse.
MouseX = Mouse.getX()+16;
MouseY = Mouse.getY()-40;

// get the Offsets to calculate the correct tile.
OffsetX = dungeonView.getViewDeltaX();
OffsetY = dungeonView.getViewDeltaY();

// use reverse math to get the grid of every other tile.
MapX = (int) (MouseX/TileWidth - OffsetX/TileWidth - MouseY/TIleHeight + OffsetY/TIleHeight);
MapY = (int) (MouseX/TileWidth - OffsetY/TileWidth - OffsetY/TIleHeight + MouseY/TIleHeight);

// get screen locations of that tile.
ScreenX2 = OffsetX + MapY*TileWidth/2 + MapX*TIleWidth/2;
ScreenY2 = OffsetY - MapX*TIleHeight/2 + MapY*TileHeight/2;

// This check here will give a quick and dirty check to see what part of the mouse is in the tile. 
// If it is in the first or last quarter of the x axis, it will check to see what the adjacent tiles are and change accordingly.

if((MouseX-ScreenX2)<TileWidth/4+16){
  if((MouseY-ScreenY2)<TileHeight/4*3-40){
    	MapY = MapY - 1;
  }else{
    	MapX = MapX - 1;
  }
}else if((MouseX-ScreenX2)>TileWidth/4*3+16) {
  if((MouseY-ScreenY2)<TileHeight/4*3-40){
    	MapX = MapX + 1; 
  }else{
    	MapY = MapY + 1;
  }
}


And these are the results of my game. My game is being programmed in Java for Android using libGdx at the graphics library.

Posted Image


#4779914 reason i love my wife

Posted by Enders on 27 February 2011 - 06:42 PM

Wow. You know I am not one to start threads this long. But several of you have posted some valid things. Some funny things, and some rude things.

Funny: I found copying my post and putting different references to it was funny. But I am calling my plagurism card on that. I want 5 buck. (Joke)

Rude: yes mike, saying my wife and I are dumb because we are using ubuntu and she should leave me was a bit rude. But I do appreciate that you said it was just a joke in the end. I am sure you reallu don't want people to break up a happy marriage with children right? I had some time to cool off from that and I had to realize that forums come with trolls. Its been a while since I participated regularly on a forum.

Valid points: yes, I could have adjusted windows settings or reinstalled it without the fluff. I also did buy a $400 walmart computer. Yes, my wife did want windows back when I first installed ubuntu. But after a few years, she realized that ubuntu was pretty easy to use. Yes, I does have some issues, but so does windows. She liked ubuntu because the stuff she uses most is already on a clean install. I like ubuntu because it quick to load, has an interface that's pleasent to me, and I can keep going on. I know that windows has better compatability for a lot of applications out there. but I do like how ubuntu is setup. For others, I am sure it is crap. For me and my wife, its good.

And with wine...almost never use it. I only mentioned it because telltail games came out with a back to the future adventure I wanted to try out. I can get it to run with wine and winetricks+directx. (Which was surprisingly easy to install)

I don't play a lot of newer games. Almost don't have much time to play games at all. I am a bigger fan of older games. Warcraft 1/2, eye of the beholder. For those, I use dos box. I don't need a super computer, just something that works and allows me to get my programming fix in.

Well, thanks for listening to my "like ubuntu" again. I was actually hoping to hear about why other guys or gals love their spouse. But oh well, maybe it is true, programmers don't have spouses. (Joke)


#4779548 reason i love my wife

Posted by Enders on 27 February 2011 - 12:09 AM

So the wife and I got a new computer last weekend. It has been 5 years since we got a new one, so the specs seemed off the charts compared to the one we had. We had ubuntu installed on the old one before the hardware died.

So we bring this computer home. I boot it up, its got windows 7. I am thinking to myself, she used windows before and liked it. Always said she needed windows to print out coupons or whatever.

She played resturant city for a few days and commented on how much faster the game plays. I never really got a go on the windows as I didn't want to go through with installing python and all the other programming languages from the websites and stuff.

Then one day. Danny (my wife) says to me.

"Ahh I hate windows. I have to do too much crap just to do something. Install ubuntu."

She was right too. I also hated the start menu, with it being so cluttered. The way I have to download things from websites instead of a repository. The clunky control panel that takes forever to load. Oh and let's not forget all of the shit programs that are included with a walmart bought dell. I was missing the simple, it just works, ubuntu.

And now that ubuntu is up and running. My wife feels at home. And it is running way better then our last computer. I am in heaven ^_^

Now to download wine and directx to play some "back to the future"


#4779190 [Pygame - FILES INCLUDED] Performance issues in RPG prototype

Posted by Enders on 25 February 2011 - 07:31 PM

Alright, been going over your source. I think i understand how you load your map.

You put all your map data in the game.mapTiles array. Looking around your source code, I saw that you are looping that array WAY to many times. You dont need to loop that array at all in fact.

All you need to do is know where your player is, and draw around your player.

I see how you are using a small image to map the tiles for the larger world. I used the same technique for collision detection. You can use that idea and build upon it. I am not sure what is faster: reading an array, or reading a bitmap. But in the end it will do the same thing.

What you can do is since you know the size of the world map and you know the size of the tiles. you just multiply them together.

world map size: 20x20
tile size: 16x16

so your position map is 320x320

sets say we want our viewport to only show 8 tiles across and 8 tiles down. So the view port will only show 128 pixels across and 128 pixels down. In the middle will be the player.

Lets make our player start position to be 123x98. A strange number, yes?
We will get what tile our player is on by dividing 16 from those numbers. *note: you want integers, so cast to an integer*
123x98 / 16x16 = 7x6

So we will be able to draw our tiles by offsetting them according to our player.

for tiley in range(0, mapsizey):
    	for tilex in range(0, mapsizex):
            	posx = -playerx + int(windowWidth/2) + (tilex * tileWidth)
            	posy = -playery + int(windowHeight/2) + (tiley * tileheight)
                tile[tilex, tiley].draw(posx, posy)

That will off course draw the whole map around the player. You really just want to draw a small section of the map.


startMapx = int(playerx/tileWidth) - int(windowWidth/tileWidth/2) - 1
startMapy = int(playery/tileHeight) - int(windowHeight/tileheight/2) - 1

endMapx = int(playerx/tileWidth) + int(windowWidth/tileWidth/2) + 1
endMapy = int(playery/tileHeight) + int(windowHeight/tileheight/2) + 1

for tiley in range(startMapy, endMapy):
    	for tilex in range(startMapx, endMapx):
            	posx = -playerx + int(windowWidth/2) + (tilex * tileWidth)
            	posy = -playery + int(windowHeight/2) + (tiley * tileheight)
            	tile[tilex, tiley].draw(posx, posy)

This will only draw the tiles that are around the player. And if you have a really really big map, it wont loop through the whole thing. Only the part you want. I padded the start and end position with 1 so when drawing it wont show a blank area when moving.

I know you have to change a lot of code to be able to do this. Particularly making your map array into a multidimensional array. You could also use the bitmap, and reference that to draw the rest. But like i said, I do not know what one is faster.

Anywho, this was a good way i made my RPG back in the day. Maybe you could use something from it.


#4774747 Cant get a stable planet orbit...

Posted by Enders on 15 February 2011 - 07:17 PM

WHOO! :D

I have been working on this myself on my own project :)

I will help you out.

--------- Your Code -------------
D3DXVECTOR3 dir = planet.pos - star.pos;

    float d = D3DXVec3Length(&dir);
    float dt = (float)period * timescale;

    D3DXVec3Normalize(&dir, &dir);

    planet.acc *= 0.0f;
    planet.acc = -g*(star.mass)/(d*d)*dir;    

    planet.pos += planet.vel*dt + planet.acc*.5f*dt*dt;
    planet.vel += planet.acc*dt;
My code is very similar but does not use the vector from D3DX.

First I calculate force:

  for i in PlanetList:
                ydist = (sun.x - i.y)
                xdist = (sun.y - i.x)

                i.allforce = (grav * sun.mass * i.mass)/(ydist**2+xdist**2)

                if math.sqrt(ydist*ydist+xdist*xdist) > (i.rads + sun.rads): # Make sure the circles are not in each other.
	            i.yforce = i.yforce + math.sin(math.atan2(ydist, xdist))*i.allforce
                    i.xforce = i.xforce + math.cos(math.atan2(ydist, xdist))*i.allforce

Then I apply that force per object to move the objects.

def move(self, yforce, xforce):
        if self.mass == 0:
            self.mass = 0.00001
	self.time = self.time + 0.1
        self.yspd = self.yspd + (yforce/self.mass) 
	self.xspd = self.xspd + (xforce/self.mass) 

        self.y = self.y + (self.yspd) + (0.5 * (yforce/self.mass)*.1**2)
        self.x = self.x + (self.xspd) + (0.5 * (xforce/self.mass)*.1**2)

works pretty well for me. Good luck :)




#4771646 Making an image shoot

Posted by Enders on 08 February 2011 - 06:57 PM

Alright, I got it.

It was a little difficult to implement because you changed some of the code around. Also I noticed a few errors that would crash the program.
In the new code, I put comments in the areas that i changed.

Can i ask why you are using negative numbers for placement of the images? If i wanted to draw the tank at -200 on the x axis, it would draw off screen. At least for me anyway.

Well, i think you still need to work on coding. I notice that every problem you are having you are asking others to help you with. I am all for helping, but without knowing how to use the code, you wont be able to make the game. My advice, keep practicing. Do not let not knowing discourage you. Let it feed you, fuel you to know more. Always try new things.

Some of the things you made in the code is good. You are just missing some things to make it complete.

But, you dont have to ask for people to hold your hand every step of the way. It would actually get people to not help you in the long run. Programming is learned by associative learning. Where you must learn how to use one thing to be able to learn another. You will use the first thing to learn the second thing. And you will use the first and second thing to learn a third thing.

Keep working on python game tutorials. It will help you learn the things yo need. And when you learn something that is relevant, use it in your code. :)

But enough of that, here is the new code. :D

import pygame

class Tank:

    	def __init__(self):                                	
            	self.Tank = pygame.image.load("tank.png")  	
		self.x = 20
		self.y = 40
		self.firecountdown=0 

    	def draw(self, surface):
            	surface.blit(self.Tank, (self.x, self.y))  	
#    		def update(dt):	This line was indented too far and it also did not include the self tag.					
	def update(self, dt):
		if(self.firecountdown > 0):
			self.firecountdown-= dt 
#   	def fire():  This line, did not include the self tag. I also noticed you where trying to access other objects with this function.
#			You need to pass that object to be able to access its attributes.
	def fire(self, bullet):
		if(self.firecountdown <=0) :
			bullet.x = self.x
			bullet.y = self.y
			bullet.fired = True	# I included a variable in the Bullet class to determine if the bullet has been fired.
			bullet.speed = 10
			self.firecountdown = 1000 


class Bullet:
	def __init__(self):
		self.bullet = pygame.image.load("tank_bullet.png")
#			self.y = tank.y		I changed the tank.y and tank.x to be 0 because you are unable to access the tank's object from the start of the class.
#  			self.x = tank.x		At least, not without passing it first. But it still would do nothing anyway.
		self.y = 0
    		self.x = 0
    		self.speed = 0
    		self.forwardx = 1
    		self.forwardy = 0
		self.fired = False	# Added a bool to determine if the bullet was fired or not. It will determine to draw on screen or not.

		def draw(self, surface):
#    		surface.blit(self.x, self.y)	You forgot to include the image to draw. Included self.bullet.
    		surface.blit(self.bullet, (self.x, self.y))

		def update(self):
    		self.x += self.forwardx * self.speed 
    		self.y += self.forwardy * self.speed 
		if self.x > 640:	# Added a check to determine if the bullet goes off screen. If it does, just turn fired off.
			self.fired = False

class Lvl_1:
		def __init__(self):
    		self.floor = pygame.image.load("floor.png")

		def draw(self, surface):
    		surface.blit(self.floor, (0, 0))

class Enemy_tank:
		def __init__(self):
    		self.enemy_tank = pygame.image.load("enemy_tank.png")

		def draw(self, surface):
    		surface.blit(self.enemy_tank, (200, 40))

#Setting up screen
pygame.init()                                       			
background_color = (0,0,0)                         			
(width, height) = (640, 480)                                	
screen = pygame.display.set_mode((width, height))   			
pygame.display.set_caption('Game Window')                  	
clock = pygame.time.Clock()  

lvl_1 = Lvl_1()
bullet = Bullet()
enemy_tank = Enemy_tank()
Tank = Tank()                                       			
pygame.key.set_repeat(1,50)                                	
running = True                                              	

while running:	#Not sure why you got rid of the loop condition?
	Tank.update()		#got rid of the td pass. Looked to be unneeded.
	bullet.update(30)	#got rid of the td pass. Made it a number instead. 

    	screen.fill (background_color)                      	
    	Tank.draw(screen)   	
	lvl_1.draw(screen)
	if bullet.fired == True:	#if the bullet.fired is true, it will draw the bullet.
		bullet.draw(screen)
	enemy_tank.draw(screen)                          	

    	pygame.display.flip()                              	
    	clock.tick(30)                                      	

    	for event in pygame.event.get():                    	


            	if event.type == pygame.QUIT:       			
                    	running = False
            	elif event.type == pygame.KEYDOWN:          	
                    	if event.key == pygame.K_RIGHT:
                            	Tank.x += 5         			
                    	if event.key == pygame.K_LEFT:
                            	Tank.x -= 5         			
    			if event.key == pygame.K_SPACE:
    				Tank.fire(bullet)	#added the bullet object to pass to the fire function of the tank class. So the function can access the x and y.



#4764260 beginner

Posted by Enders on 24 January 2011 - 07:52 PM

Opengl and directx are addons for programming. They are called Application Programmable Interface or APIs. I prefer to use opengl as it is not propritory to microsoft.

So you can use opengl in c++. I first learned opengl with the opengl nehe tutorials. Google and check them out. Opengl will give you great functions for both 2d and 3d games.

One thing you should be aware of though, good graphics do not come from good programming, you need to make the images or models or get somebody who is good at it with you. But it is perfectly fine at first to use crappy graphics as placeholders to learn to use the new functions and build a game engine.

So go and make a tiled based rpg or something :P


PARTNERS