December 22, 2024, 09:07:17 pm

The Gang Garrison 2 Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

NOTICE: Wondering where all the forums have gone?

Join the community Discord server!

Pages: 1 [2]

Author Topic: Constant tickrate with interpolated FPS: proof-of-concept in GameMaker 8.1.141  (Read 13672 times)

#freeprime

  • Junior Member
  • **
  • Karma: 4
  • Offline Offline
  • Posts: 115
  • not arctic

Maybe you can't port GG2 to GM8.1 or GMS 1.4/2 but how about rewriting the game from scratch then? I know that it's a lot of work and etc but looks like there's no other way.
While we do like to complain about some issues, porting the game to a new version of GM is still orders of magnitude less work than a rewrite ;)
about the porting, has anyone entertained the thought of using vanguard as a base?
Logged

Heapons

  • Junior Member
  • **
  • Karma: 6
  • Offline Offline
  • Posts: 128
  • Just a guy wandering on the internet.

Well, I may be in a bad position to say that but... sounds like a great idea to use Vanguard since it's both not made in GameMaker and has some similarities with GG2.
Logged

BlackDoomer

  • Junior Member
  • **
  • Karma: 3
  • Offline Offline
  • Posts: 79
  • *batteries not included
    • Doom2D.org

Well, I may be in a bad position to say that but... sounds like a great idea to use Vanguard since it's both not made in GameMaker and has some similarities with GG2.
What is Vanguard?
« Last Edit: October 29, 2018, 07:59:56 am by Black Doomer »
Logged
Oh my God, who touch Sasha?! (c) Heavy
www.doom2d.org - Doom 2D, one of the best 2D-games in the world

LOL U MAD

Kevin Kuntz

  • Heroic Member
  • ****
  • Karma: -58
  • Offline Offline
  • Posts: 708
  • panda took the kids
    • Rav And Kill Bill
Logged
I PEAKED
I PEAKED

Saniblues

  • Onion Knight
  • Administrator
  • *****
  • Karma: -1305
  • Offline Offline
  • Posts: 12206

GMStudio or GMS2 would be a better target for a port/remake imo since it has support for a lot of things out-of-the-box, particular steam's p2p networking api which would remove the need for porting forward.
Logged
Quote from: mop
Quote from: MR MAGN3TIC
I don't like it.  :nah:
Oh, well, you might as well pack up and stop now, because he doesn't like it
I'm bored out of my skull, Lets play a different game!
Lets take a visit down below And cast the world in flames!

BlackDoomer

  • Junior Member
  • **
  • Karma: 3
  • Offline Offline
  • Posts: 79
  • *batteries not included
    • Doom2D.org

GMStudio or GMS2 would be a better target for a port/remake imo since it has support for a lot of things out-of-the-box, particular steam's p2p networking api which would remove the need for porting forward.
Both of them are intended more for creating games for tablets, and poorly designed in general.
Logged
Oh my God, who touch Sasha?! (c) Heavy
www.doom2d.org - Doom 2D, one of the best 2D-games in the world

LOL U MAD

Phantom Brave

  • All Hail Classicwell
  • Moderator
  • *****
  • Karma: 70
  • Offline Offline
  • Posts: 12532
  • Another one --

There are three reasons why I never looked into adding "interpolated fixed timestep" style framerate-independence into GG2: (note: physics is synonymous with physics plus game logic)

1) Game maker.
2) When done with a lot of headroom, it increases the input latency floor. Instead of "framerate interval/2 plus frametime plus ticktime" average latency, you have "framerate interval/2 plus frametime plus tickrate interval plus ticktime" average latency. By design, ticktime is almost always higher than the framerate interval, because people use small physics framerates like 15 or 20.
3) You need to implement some kind of delta time anyway. Sometimes a user really cannot even run the physics simulation at 20 ticks per second.

I have no issues with updating GG2 to newer versions of game maker.

As for other platforms like python or C++, I made a toy game maker-like language in rust that I called gammakit: https://github.com/wareya/gammakit but it's not gonna go anywhere unless someone gives me a million dollars or something.

It's not actually difficult to make something resembling very early versions of GG2. What's hard is making something with support for a very wide range of available functionality so that you don't have to dig into and extend the platform while using it. Having to do that causes bad structural problems unless you are one of the very most skilled AND EXPERIENCED of programmers. This is what killed benetnasch/kotareci.

edit: I fucked up writing point 2 originally, so I rewrote the math explanation. If you're still confused, here:

Code: [Select]
think_time : time between simulation of a frame's physics/logic beginning and finishing
render_time : same but for rendering
think_interval : time from the beginning of one physics/logic tick to the beginning of the next physics/logic tick
render_interval : same but for rendering
sequential_interval : when you think -> render -> repeat, think_interval and render_interval are exactly this, and think_time and render_time add up to less than or equal to this

when you do things the way game maker currently does, you get this average latency:

think_time + render_time + sequential_interval/2

when you use interpolated fixed timestep, you get this instead:

think_time + render_time + render_interval/2 + think_interval
« Last Edit: October 31, 2018, 07:01:07 am by Phantom Brave »
Logged

http://steamcommunity.com/id/wareya/
ladies and gentlemen i would like to announce that the fact of the matter is up that the fact of the matter is a fact and it matters

PrOF

  • Full Member
  • ***
  • Karma: 43
  • Offline Offline
  • Posts: 596
  • Sometimes a dev. Only sometimes

If the registry functions work, or if the Faucet Audio extension is done, I'd be happy to upgrade to 8.1, although performance has never been an issue for gg2, and the lag is only felt because of the lack of client-side input prediction, which will never be implemented, so I believe it won't make a big difference
Making a version of gg2 using this type of interpolation could be interesting, but I don't know how much effort that'd take
Logged

BlackDoomer

  • Junior Member
  • **
  • Karma: 3
  • Offline Offline
  • Posts: 79
  • *batteries not included
    • Doom2D.org

Making a version of gg2 using this type of interpolation could be interesting, but I don't know how much effort that'd take
Not so much, I believe, since GG2 already supports different timings (30 and 60 FPS) internally.
« Last Edit: November 04, 2018, 02:02:09 pm by Black Doomer »
Logged
Oh my God, who touch Sasha?! (c) Heavy
www.doom2d.org - Doom 2D, one of the best 2D-games in the world

LOL U MAD

#freeprime

  • Junior Member
  • **
  • Karma: 4
  • Offline Offline
  • Posts: 115
  • not arctic

curious to know if you successfully ported gg2 to 8.1 and whats really in the way because from what i can gather, there's a solution to all the previous problems?
Logged

PrOF

  • Full Member
  • ***
  • Karma: 43
  • Offline Offline
  • Posts: 596
  • Sometimes a dev. Only sometimes

Just to be sure, the repeat in the init script is useless, right?
Code: [Select]
repeat 1 {
instance_create(128, 256, circle);
instance_create(128, 320, circle2);
}
Logged

BlackDoomer

  • Junior Member
  • **
  • Karma: 3
  • Offline Offline
  • Posts: 79
  • *batteries not included
    • Doom2D.org

Just to be sure, the repeat in the init script is useless, right?
Absolutely. It was added only for stress testing purposes.

Also please note that game_init() was supposed to be called from the extension package, to behave just like an entry point. According to my concept of using GM, there should be no implicit programming in the source (ie, code NOT in scripts, predefined instances in rooms, drag-n-drop, code in Room Creation, etc.). That's the reason of commented out room_instance_* functions.
« Last Edit: November 05, 2018, 11:25:32 pm by Black Doomer »
Logged
Oh my God, who touch Sasha?! (c) Heavy
www.doom2d.org - Doom 2D, one of the best 2D-games in the world

LOL U MAD
Pages: 1 [2]
 

Page created in 0.032 seconds with 36 queries.