Author Topic: When your game is in final stages of completion...  (Read 285 times)

Offline NRJ

  • Jr. Member
  • **
  • Posts: 30
  • English is not my mother tongue...
When your game is in final stages of completion...
« on: October 07, 2017, 07:47:04 AM »
I want to know what things we have to keep in mind when your game is in the last stages of completion, so that it will run without any problem on all pc without any issues and other things like memory management(BlitzMax), protecting game data, compatibility etc..
IF YOU CAN DREAM IT,  YOU CAN DO IT...

Offline therevills

  • Full Member
  • ***
  • Posts: 154
Re: When your game is in final stages of completion...
« Reply #1 on: October 07, 2017, 08:54:00 AM »
Cross your fingers!  :P

Offline TomToad

  • Full Member
  • ***
  • Posts: 120
Re: When your game is in final stages of completion...
« Reply #2 on: October 07, 2017, 09:04:34 AM »
Cross your fingers!  :P
Is that enough?  I'd think there would need to be a blood sacrifice somewhere. :D

Seriously though, no matter what you do, you will never run on all PCs.  No matter how careful you are, there will be someone with that odd graphics card, or odd network adapter that will throw a monkey wrench in the works.  Best you can do is get as many people testing your software as you can, and address any problems that come up.
------------------------------------------------
8 rabbits equals 1 rabbyte.

Offline RonTek

  • Sr. Member
  • ****
  • Posts: 311
Re: When your game is in final stages of completion...
« Reply #3 on: October 07, 2017, 12:15:45 PM »
You could test your installation on other machines, better if it's today's average if you have access or probably conduct a beta similar on what they do on app stores or crowdfunding.

Offline NRJ

  • Jr. Member
  • **
  • Posts: 30
  • English is not my mother tongue...
Re: When your game is in final stages of completion...
« Reply #4 on: October 07, 2017, 06:25:02 PM »
It looks like testing my game on different pc, by distributing it to my friends is the only way to check that it will run fine on all systems...
IF YOU CAN DREAM IT,  YOU CAN DO IT...

Offline Steve Elliott

  • Hero Member
  • *****
  • Posts: 660
Re: When your game is in final stages of completion...
« Reply #5 on: October 07, 2017, 06:32:03 PM »
I think something that is very important when considering running your game on systems other than your own, is the system you've used to ensure your game plays at the same speed no matter the speed of CPU, GPU and monitor refresh rate.
Windows 10, 64-bit, 8Gb RAM, CPU Intel i5, 3.2 GHz, Nvidia GeForce GTX 750 Ti (2Gb)

Offline NRJ

  • Jr. Member
  • **
  • Posts: 30
  • English is not my mother tongue...
Re: When your game is in final stages of completion...
« Reply #6 on: October 07, 2017, 06:49:04 PM »
Quote
the system you've used to ensure your game plays at the same speed no matter the speed of CPU, GPU and monitor refresh rate.


Point noted.  ;D
IF YOU CAN DREAM IT,  YOU CAN DO IT...

Offline Matty

  • Jr. Member
  • **
  • Posts: 57
Re: When your game is in final stages of completion...
« Reply #7 on: November 18, 2017, 10:33:51 AM »
The things you have mentioned are all mid-stage development issues.

Testing compatibility and so on should be done after you've got your initial game concept developed but well before you are nearing shipping.

What I find are the final-stage development issues are ironing out the little kinks here and there and finishing polish touches.

At the final stages of development everything should work on every target machine you want it to run on, run well, have no bugs, and have been tested and found easy to use and accessible by as many users as you need.

Really in the final stages all you are really looking for is little bits of polish, maybe some slight tweaks to placement of some gui items, or adjusting the balance of some of the stats of your elements.

Offline RemiD

  • Jr. Member
  • **
  • Posts: 15
Re: When your game is in final stages of completion...
« Reply #8 on: November 30, 2017, 03:33:46 PM »
I would say :

->make sure that the speed of the turns/moves/animations is the same whatever the FPS (and therefore whatever the complexity of the scene and the hardware of the computer), (i have posted a code example on how to do that)

->make sure that the program will write/read files in a directory where it is allowed (an easy approach is to write/read files only in the directory (or child directories) of the game and to tell the user to put your game in c:/ (what gog.com does...) )

->make sure to not use graphics commands which have shown to cause problems...

->make sure to include libraries/fonts which may be installed on your computer, but not necessarily on others computers...

good luck !

Offline NRJ

  • Jr. Member
  • **
  • Posts: 30
  • English is not my mother tongue...
Re: When your game is in final stages of completion...
« Reply #9 on: November 30, 2017, 05:06:08 PM »
@Matty

Quote
the final-stage development issues are ironing out the little kinks here and there and finishing polish touches.


Giving your game the finishing polish touches really takes a lot of time.

the ninety-ninety rule by — Tom Cargill, Bell Labs
Quote
The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

The 90-90 rule is very true, I have experienced the same when I had completed the first game.

IF YOU CAN DREAM IT,  YOU CAN DO IT...

Offline NRJ

  • Jr. Member
  • **
  • Posts: 30
  • English is not my mother tongue...
Re: When your game is in final stages of completion...
« Reply #10 on: November 30, 2017, 05:09:56 PM »
@RemiD

Thanks RemiD for your valuable advice. 


Quote
->make sure that the speed of the turns/moves/animations is the same whatever the FPS 

That's the most important,the speed of the animations should have to be same on all the systems. 

I will keep in mind all the points that you have described.

IF YOU CAN DREAM IT,  YOU CAN DO IT...

Offline RemiD

  • Jr. Member
  • **
  • Posts: 15
Re: When your game is in final stages of completion...
« Reply #11 on: December 01, 2017, 07:28:01 AM »
see the attached bb file to see how i did that, which worked well on most computers, as long as the fps is above 10fps... (it can be playable with less than that, but there will be inaccuracies)
Code: [Select]
;Speed of the turns/moves/animations automatically adjusted to appear constant whatever the FPS
;
;This code shows a way to have an automatic adjustment of the speed of the turns/moves/animations
;so that the program appears to run at the same speed, whatever the FPS, whatever is drawn on screen, whatever the hardware of the computer/graphics card.
;The variable SpeedCoeff# must be applied to all turns/moves/animations. See the example.
;I have tested this code on several computers with different hardwares and os and it seems to work as expected.
;There may be inaccuracies if there is less than 10fps but overall it works well.

Graphics3D(800,600,32,2)     
   
HidePointer() 

SeedRnd(MilliSecs())
   
Origine = CreateCube()
ScaleMesh(Origine,0.1/2,100,0.1/2)
EntityColor(Origine,125,000,000)
EntityAlpha(Origine,0.5)
EntityFX(Origine,1)
PositionEntity(Origine,0,0,0)

Target = CreateCube()
ScaleMesh(Target,0.1/2,100,0.1/2)
EntityColor(Target,250,000,000)
EntityAlpha(Target,0.5)
EntityFX(Target,1)
PositionEntity(Target,0,0,128)

GroundMesh = CreatePlane()     
PositionEntity(GroundMesh,0,0,0)   
EntityColor(GroundMesh,050,050,050)         
     
Camera = CreateCamera()   
CameraRange(Camera,0.1,1000)
CameraClsColor(Camera,063,125,250)   
PositionEntity(Camera,0,0,0) 
 
CharacterMesh = CreateCube()
ScaleMesh(CharacterMesh,0.5/2,1.7/2,0.25/2)
PositionMesh(CharacterMesh,0,1.7/2,0)
HideEntity(CharacterMesh)

Global PlayerFeet = CreatePivot()
Global PlayerEyes = CreatePivot()
MoveEntity(PlayerEyes,0,1.6,0.1+0.1)
EntityParent(PlayerEyes,PlayerFeet,True)
Global PlayerMesh = CopyMesh(CharacterMesh)
EntityColor(PlayerMesh,000,000,250)
EntityParent(PlayerMesh,PlayerFeet,True)

PositionEntity(Camera,EntityX(PlayerEyes,True),EntityY(PlayerEyes,True),EntityZ(PlayerEyes,True))
RotateEntity(Camera,EntityPitch(PlayerEyes,True),EntityYaw(PlayerEyes,True),EntityRoll(PlayerEyes,True))
MoveEntity(Camera,0,0,-1.5)
EntityParent(Camera,PlayerEyes,True)
TurnEntity(PlayerEyes,22.5,0,0)

Global BotsCount% = 0
Dim BotFeet(10000)
Dim BotMesh(10000)

For i% = 1 To 1000 ;change this value to 1 or 10 or 100 or 1000 or more to see how the speed of the turns/moves are automatically adjusted so that it appears to run at the same speed whatever the FPS, whatever is drawn on screen.
 BotsCount = BotsCount + 1
 BId% = BotsCount
 BotFeet(BId) = CreatePivot()
 BotMesh(BId) = CopyMesh(CharacterMesh)
 EntityColor(BotMesh(BId),Rand(025,250),Rand(025,250),Rand(025,250))
 EntityParent(BotMesh(BId),BotFeet(BId),True)
 PositionEntity(BotFeet(BId),Rnd(-30,30),0,Rnd(10,90))
 RotateEntity(BotFeet(BId),0,Rnd(-180,180),0)
Next

SLight = CreateLight(1)
LightColor(SLight,255,255,255) 
PositionEntity(SLight,-1000,1000,-1000)
RotateEntity(SLight,45,-45,0)
 
AmbientLight(050,050,050)

MillisecOld% = MilliSecs()
MillisecCur% = MilliSecs()
SecsCount% = 0
FramesCount% = 0
FramesTotalCount% = 0
FramesPerSecond% = 0
Global SpeedCoeff# = 1.0   
   
While(KeyDown(1)<>1)   
 
 LoopStart% = MilliSecs()     
         
 UpdateBots()

 UpdatePlayer()

 If( EntityZ(PlayerFeet) >= EntityZ(Target) )
  ClsColor(000,000,000)
  Cls()
  Locate(0,0)
  Print("Average FramesPerSecond (FPS) = "+FramesTotalCount/SecsCount)
  Print("Seconds passed during the travel = "+SecsCount)
  FlushKeys()
  WaitKey()
  Goto LineExitGame
 EndIf

 SetBuffer(BackBuffer())

 RenderWorld()     

 MillisecCur = MilliSecs()
 If(MillisecCur < MillisecOld + 1000)
  FramesCount = FramesCount + 1
 ElseIf(MillisecCur >= MillisecOld + 1000)
  FramesPerSecond = FramesCount
  FramesTotalCount = FramesTotalCount + FramesCount
  FramesCount = 0   
  SecsCount = SecsCount + 1
  MillisecOld = MillisecCur         
 EndIf
         
 Text(0,0,"Triangles = "+TrisRendered())   
 Text(0,20,"LoopTime = "+LoopTime)   
 Text(0,40,"FramesCount = "+FramesCount)
 Text(0,60,"FramesPerSecond (FPS) = "+FramesPerSecond)
 Text(0,80,"FramesTotalCount = "+FramesTotalCount)     
 Text(0,100,"SpeedCoeff = "+SpeedCoeff)
 Text(0,120,"SecsCount = "+SecsCount)   
 Text(0,140,"See how the speed of the turns/moves are automatically adjusted so that ")
 Text(0,160,"it appears to run at the same speed, whatever the FPS, whatever is drawn on screen.")

 Flip(False)
 
 LoopTime% = MilliSecs() - LoopStart
 If(LoopTime < 1)
  LoopTime = 1
 EndIf  
   
 SpeedCoeff = Float(30) / 1000 * LoopTime

Wend
.LineExitGame

EndGraphics()

End()
 
Function UpdatePlayer()
 MoveEntity(PlayerFeet,0,0,0.2*SpeedCoeff)
End Function
 
Function UpdateBots()
 For BId% = 1 To BotsCount
  TurnEntity(BotFeet(BId),0,2.0*SpeedCoeff,0)
  MoveEntity(BotFeet(BId),0,0,0.2*SpeedCoeff)
 Next
End Function