scidave's Recent Forum Activity

  • Welcome to the forum!

    Very wild and interesting idea to share files for positions. It isn't really practical (the lag is abysmal, but you could always lower the check time to every game tick) though as you begin to add more and more objects this will become unwieldy quick.

    Still very cool first post. Looking forward to seeing your next demo.

  • Instead of using a separate layout for the pause menu you could also use an "inheritance layer" to keep the same layer between all of your layouts.

  • Just wanted to say that your tutorials are very useful! I learned a lot of interesting stuff while going through them.

    Thanks!

    In the last part you also included an Array Helper - looks really practical, except I can't really get it to work? Even though I change the items.txt file, nothing gets loaded into the program.

    I saw that after you posted this, Lucid made his array editor app so I'm guessing that takes care of the problem. If not, let me know and I'll go back and see if I can help out. I've been so busy with work lately I'll I have time to do is read the forums...haven't worked on a game in months.

  • Hi,

    Looks like you are making some cool space games! That is my favorite game type.

    I experienced the same problems you had when trying to have the spaceship land on planets, but still return to a non-reset game layout.

    I ended up making a separate layout for the space world and the planets and then used global arrays and hash tables to keep track of the state of the game world while moving from one layout to the next.

    I show a version of doing this in the Mikey Adventure tutorial in Part 4: Layout Transitions.

    Hope this helps!

  • Cool minor! Looks like you are back in action.

    I'm blown away by how many cool demos are out now. A year ago this place was a ghost town for games.

  • Glad to hear it is working. I know I have gotten it to work fine on a Windows XP VM running on top of Windows but had never tried on a MAC. Odd that it is making a difference.

  • Hi!

    Does that mean that I can't create a 12 player platformer shooter game with PodSixNet and Construct?

    You could create a 12 player platformer shooter, but it would be much harder than what I showed in the tutorials. You would need to create a way to deal with all the bullet collisions and people jumping around fast. Would have to deal with lag issues and prediction.

    It is possible but would take a lot of work. I've been really busy with work, but when July roles around I was planning on creating a simple space shooter with Podsixnet and Construct to test out faster action games and see how feasible it is in practice.

  • Did you enable 3D support in the virtual graphics card settings?

  • Very cool. Rojo is a true asset to the community.

  • Interesting thread....

    I think what Arima was saying was that you "can't compete with Blizzard or any other big game company on scale". You could and many others have made a game than many would consider more fun or interesting than any big game developer. None of those games are considered great because they were massively multiplayer or had tons and tons of hours of varied gameplay though.

    I saw go for your big game and see what happens. However, the advice about starting small and doing prototypes is particularly good advice with Construct because of chance of certain bugs creeping in. Read about "Phenomenon 32" for one developer's experience.

  • Bump!

    I was reading some articles the other day and ran across this game (that I probably put a good 30+ hours into last year). It really gives me a deep appreciation for all the work/pain you went through to make this game a reality.

    If people haven't played it, it is definitely worth a look. Probably the largest most complex Construct game released to date. Just remember to back up your save files in case something goes bonkers! Great game...and I wasn't paid for this advertisement..

    http://www.jonas-kyratzes.net/games/phenomenon-32/

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • I just checked this out and looked through their programming examples.

    Very, very cool idea and is based off of Blitxmax supposedly. You do have to be able to program as all of the game making is in code and it takes quite a bit of code to make a simple game. For example: here is pong:

    Strict
    
    Import mojo
    
    Global SCREEN_WIDTH%
    Global SCREEN_HEIGHT%
    Global dt:DeltaTimer
    Global app:MyApp
    
    Function Main:Void()
    	app = New MyApp()
    End Function
    
    Class MyApp Extends App
    	Field ball:Sprite
    	Field playerBat:Sprite
    	Field cpuBat:Sprite
    	Field backgroundImg:Image
    	Global FPS:Int = 60
    		
    	Method OnCreate:Void()
    		' Store the device width and height
    		SCREEN_WIDTH = DeviceWidth()
    		SCREEN_HEIGHT = DeviceHeight()
    
    		Seed = Millisecs()
    		dt = New DeltaTimer (60)
    		
    		' Load the image
    		backgroundImg = LoadImage("bg.jpg")
    		
    		' Create the ball
    		ball = New Sprite(LoadImage("ball.png", 1, Image.MidHandle), SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2)
    		ball.dx = RndMin(-5,5,2)
    		ball.dy = RndMin(-5,5,2)
    				
    		' Create the player
    		playerBat = New Sprite(LoadImage("bat.png", 1, Image.MidHandle), 30, SCREEN_HEIGHT / 2)
    		playerBat.setRGB(255,0,0)
    		playerBat.speedY = 1
    		playerBat.maxYSpeed = 7
    		
    		' Create the AI
    		cpuBat = New Sprite(LoadImage("bat.png", 1, Image.MidHandle), SCREEN_WIDTH - 30, SCREEN_HEIGHT / 2)
    		cpuBat.setRGB(0,0,255)
    		cpuBat.speedY = 0.2
    		cpuBat.maxYSpeed = 5
    		cpuBat.scaleX = -1
    		
    		' 60 FPS please
    		SetUpdateRate FPS
    	End Method
    	
    	Method OnRender:Void()
    		DrawImage backgroundImg, 0, 0
    		playerBat.draw()
    		cpuBat.draw()
    		ball.draw()
    		drawGUI()
    	End Method
    	
    	Method drawGUI:Void()
    		DrawText self.playerBat.score, SCREEN_WIDTH / 4, SCREEN_HEIGHT - 50
    		DrawText self.cpuBat.score, SCREEN_WIDTH - SCREEN_WIDTH / 4, SCREEN_HEIGHT - 50
    	End
    	
    	Method OnUpdate:Void()
    		dt.UpdateDelta
    		controls()
    		ai()
    		ballUpdate()
    		collisions()
    	End Method
    	
    	Method collisions:Void()
    		if rectsOverlap(ball.x - ball.w2, ball.y - ball.h2, ball.w, ball.h, playerBat.x - playerBat.w2, playerBat.y - playerBat.h2, playerBat.w, playerBat.h)
    			ball.dx = Abs(ball.dx)+0.5 * dt.delta
    		End
    		if rectsOverlap(ball.x - ball.w2, ball.y - ball.h2, ball.w, ball.h, cpuBat.x - cpuBat.w2, cpuBat.y - cpuBat.h2, cpuBat.w, cpuBat.h)
    			ball.dx = -(Abs(ball.dx)+0.5 * dt.delta)
    		End
    	End
    	
    	Method ballUpdate:Void()
    		ball.move()
    		if ball.x < 0
    			self.cpuBat.score+=1
    			resetBall()
    		End
    		if ball.x > SCREEN_WIDTH
    			self.playerBat.score+=1
    			resetBall()
    		End
    		if ball.y < 0 or ball.y > SCREEN_HEIGHT
    			ball.dy = -ball.dy
    		End
    		
    		ball.rotation-=ball.dx * dt.delta
    	End
    	
    	Method resetBall:Void()
    		ball.x = SCREEN_WIDTH / 2
    		ball.y = SCREEN_HEIGHT / 2
    		ball.dx = RndMin(-5,5,2)
    		ball.dy = RndMin(-5,5,2)
    	End
    	
    	Method controls:Void()
    		If KeyDown(KEY_UP)
    			playerBat.dy-=playerBat.speedY
    			if playerBat.dy<-playerBat.maxYSpeed then playerBat.dy = -playerBat.maxYSpeed
    		else If KeyDown(KEY_DOWN)
    			playerBat.dy+=playerBat.speedY
    			if playerBat.dy>playerBat.maxYSpeed then playerBat.dy = playerBat.maxYSpeed
    		else
    			playerBat.dy*=0.95 ' friction to slow it down
    		End
    		
    		if playerBat.y < 0
    			playerBat.y = 0
    			playerBat.dy = 0
    		End
    		if playerBat.y > SCREEN_HEIGHT
    			playerBat.y = SCREEN_HEIGHT
    			playerBat.dy = 0
    		End		
    		playerBat.move()
    		
    	End
    	
    	Method ai:Void()
    		if ball.dx > 0 then
    			if ball.y < cpuBat.y
    				cpuBat.dy-=cpuBat.speedY
    				if cpuBat.dy<-cpuBat.maxYSpeed then cpuBat.dy = -cpuBat.maxYSpeed
    			End
    			if ball.y > cpuBat.y
    				cpuBat.dy+=cpuBat.speedY
    				if cpuBat.dy>cpuBat.maxYSpeed then cpuBat.dy = cpuBat.maxYSpeed
    			End
    		else
    			cpuBat.dy*=0.95 ' friction to slow it down
    		end if
    		if cpuBat.y < 0
    			cpuBat.y = 0
    			cpuBat.dy = 0
    		End
    		if cpuBat.y > SCREEN_HEIGHT
    			cpuBat.y = SCREEN_HEIGHT
    			cpuBat.dy = 0
    		End		
    		cpuBat.move()
    	End
    	
    End Class
    
    Class Sprite
    	Field x#,y#
    	Field dx#, dy#
    	Field speedX#, speedY#
    	Field maxXSpeed#, maxYSpeed#
    	Field image:Image
    	field scaleX# = 1, scaleY# = 1
    	field rotation#
    	field red%, green%, blue%
    	field w%, h%
    	field w2%, h2%
    	field score%
    	
    	Method New(img:Image,x#, y#)
    		self.image = img
    		self.x = x
    		self.y = y
    		self.w = img.Width()
    		self.h = img.Height()
    		self.w2 = self.w/2
    		self.h2 = self.h/2
    	End
    	
    	Method setRGB:Void(r%,g%,b%)
    		self.red = r
    		self.green = g
    		self.blue = b
    	End
    	
    	Method move:Void()
    		self.x+=self.dx * dt.delta
    		self.y+=self.dy * dt.delta
    	End
    	
    	Method draw:Void()
    		SetColor red, green, blue ' doesnt work with images!?!??!
    		DrawImage(image, x, y, rotation, scaleX, scaleY)
    		SetColor 255, 255, 255
    	End
    End
    
    Function rectsOverlap:Int(x0:Float, y0:Float, w0:Float, h0:Float, x2:Float, y2:Float, w2:Float, h2:Float)
    	If x0 > (x2 + w2) Or (x0 + w0) < x2 Then Return False
    	If y0 > (y2 + h2) Or (y0 + h0) < y2 Then Return False
    	Return True
    End Function
    
    Function RndMin:Float(min#,max#,minAmount#)
    	local rv# = Rnd(min, max)
    
    	While Abs(rv) < minAmount
    		rv = Rnd(-min,max)
    	Wend
    	return rv
    End
    
    Class DeltaTimer
    	
    	Field targetfps:Float = 60
    	Field currentticks:Float
    	Field lastticks:Float
    	Field frametime:Float
    	Field delta:Float
    	
    	Method New (fps:Float)
    		targetfps = fps
    		lastticks = Millisecs()
    	End
    	
    	Method UpdateDelta:Void()
    		currentticks = Millisecs()
    		frametime = currentticks - lastticks
    		delta = frametime / (1000.0 / targetfps)
    		lastticks = currentticks
    	End
    	
    End
    
    [/code:176ym61k]
    
    Still, I was very impressed by the claims.  Will be an interesting project to watch!
scidave's avatar

scidave

Member since 4 Jul, 2009

Twitter
scidave has 1 followers

Trophy Case

  • 15-Year Club
  • Email Verified

Progress

16/44
How to earn trophies