Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411276 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 11:19:58 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsRemnants of Naezith [RELEASED on STEAM]
Pages: 1 ... 14 15 [16] 17
Print
Author Topic: Remnants of Naezith [RELEASED on STEAM]  (Read 62637 times)
naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #300 on: March 12, 2017, 04:49:23 PM »

*REPORT

I am skipping this semester(normally it was the final one) of University to spend my whole time on the game.

Summary of current situation:
Not much left on technical part. We have enough levels but they needs to be polished and decorated. Graphics for decoration are still lacking unfortunately.

The changelog.txt just got OVER 2000 LINES! See it fully here.




To-do list:
Trying to slay those lines...



Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #301 on: March 15, 2017, 10:25:40 AM »

I created a GitHub project for localization,

You can add your language into the game!

https://github.com/naezith/naezith-localization/tree/master/lang
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #302 on: March 31, 2017, 06:18:24 AM »

Fully focused on levels at the moment.

Trying to pick best 80 + secrets to fill 4 chapters as good as possible.

You can follow the level progress here!
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #303 on: May 04, 2017, 08:32:57 AM »

I am happy to say that I completed the native Linux build! It works fine generally but there is still some system bugs in the SFML's Linux support that I can't fix.

I listed them here:
https://www.reddit.com/r/naezith/comments/54lipt/troubleshooting/

I don't have a Mac so Mac port will wait for a while.
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #304 on: May 07, 2017, 01:29:24 PM »

Okay I just spent my whole day on my sister's Macbook for the Mac build. I want to use GCC and SFML gave some errors building with it.

Same error someone had in 2012... Sad

I'd like to try again in future if they fix it.
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #305 on: May 09, 2017, 06:53:33 PM »

Hey hey hey! Here is a gameplay clip for you guys!
All of the issues were caused by the super old OS version.

I upgraded from Mac OS X 10.7.5 to macOS Sierra 10.12.4 and did all the C++ and SFML setup again.

Now everything works nicely, Mac port is done!  Beer!

There are two small problems on Mac about SFML I noted here on top.
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #306 on: May 11, 2017, 01:33:23 AM »

Every huge class in my code was implemented as Singleton. I always knew that it's a bad thing to do but I never had any issue about it and it was easy to use... until I saw the Mac build crash at exit.

When I searched about it, I found this: https://github.com/SFML/SFML/issues/970

Having SFML's sound objects in a global scope causes that crash because when program terminates, OpenAL destructor gets called before our global sf::Sound or sf::Music objects clean up. So I had to refactor all the code (~35k loc) to avoid singleton, spent one night at it and problem solved!

I was calling   SoundManager::i().playSound(..);

Now I call Game::i().getSoundManager().playSound(..);

So as you see, Game class is the last remaining singleton class I have. At this point, Game class is a lot harder to refactor because it's everywhere, EVERYWHERE... Just because this is my first project, it's a bit messy.

I don't really know if I should also refactor the Game class and pass the pointer of it everywhere needed through the constructors, then access big classes like

game->getSoundManager().playSound(..);

Thoughts on this?
Logged

polyglitch
Level 0
*


View Profile
« Reply #307 on: May 12, 2017, 03:09:45 PM »

If you are using a Version Control setup (git or mercurial), I would try to refactor it. Worst case scenario is you learn more programming, and you have to just roll back to the previous version if you cannot get it to work. Passing pointers around and following good practices gets easier and automatic the more you do it.
If you don't have version control, I would recommend setting that up just for safety.
Logged
naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #308 on: May 15, 2017, 02:48:53 AM »

If you are using a Version Control setup (git or mercurial), I would try to refactor it. Worst case scenario is you learn more programming, and you have to just roll back to the previous version if you cannot get it to work. Passing pointers around and following good practices gets easier and automatic the more you do it.
If you don't have version control, I would recommend setting that up just for safety.

I decided to have only one singleton which is Game class. I removed singleton implementation from all others. I have version control and tried removing singleton from Game too but code becomes less readable and harder to manage. I will keep "Game::i()" instance, it's just easy to use, you put #include "Game.h" and ready to go. Want to remove it? you just remove the #include, done, no need to change function parameters which pass the pointer to it. Smiley

Finally got the award icon for the Steam page by the way,

http://store.steampowered.com/app/590590/Remnants_of_Naezith


Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #309 on: May 27, 2017, 05:57:31 AM »

~ A new GIF for you! ~
Logged

Zorg
Level 9
****



View Profile
« Reply #310 on: May 27, 2017, 06:14:34 AM »

Jugdging by this GIF, it looks like the camera takes a long time to speed up and gain a forward focus. I guess it's not really a problem because the screen is more wide in the real game and not around ~5:4. Smiley
Logged
naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #311 on: May 27, 2017, 06:39:34 AM »

Jugdging by this GIF, it looks like the camera takes a long time to speed up and gain a forward focus. I guess it's not really a problem because the screen is more wide in the real game and not around ~5:4. Smiley

Camera is totally same as in the

.

In this GIF it shows far left side of the 4:3 window.
Logged

DireLogomachist
Level 4
****



View Profile
« Reply #312 on: May 27, 2017, 05:30:50 PM »

You got featured on Kotaku!
http://kotaku.com/remnants-of-naezith-shows-gaming-needs-more-grappling-h-1795610852

Congrats!
Logged


Living and dying by Hanlon's Razor
naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #313 on: May 28, 2017, 02:08:19 AM »


Hey, thank you!
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #314 on: May 31, 2017, 04:31:57 PM »

Today I improved my Replay Validator and it's so useful that I want to talk about it here.

The game has Replay System. Replays have only the inputs, they know nothing about the physics or the game.
Every replay works same everytime, everywhere because game is fully deterministic.

However replays would desync if someone changes the physics is his client with Cheat Engine and submit replays, or I do a gameplay changing update.

Reason is that the player recorded the replays with old physics and now same inputs don't simulate exactly the same gameplay. That's called desyncing.

When you have game with Leaderboards, there will be cheaters around. And they have so many ways to cheat. You have a secure server, you protected it. You protected the messaging and false data submitting. But still there is Cheat Engine and it's million tricks. So even if you secured your server, they can submit very low times to get high on the leaderboard.

What I could do thanks to the Replay System I implemented is, making a Replay Validator!

BENEFITS OF REPLAY SYSTEM:
  • Players enjoy the game a lot more, they learn and improve by watching.
  • A new player who finishes the level in 3 mins can't say that #1 player who has only 3 seconds is cheating. But he will do a big "WOW".
  • Found a bug? Just play the level once in a way bug would trigger, then you can reproduce that ultra rare case by simply watching the replay.
  • Not sure if something runs as it should? Record it and slow the replay to 0.01X to make sure.
  • Now you can implement your Replay Validator!

BENEFITS OF REPLAY VALIDATOR:
  • Did a change in code but not sure if you broke something? Just run the validator and see if any of replays are desyncing.
  • I don't need to wipe all the leaderboards when I do a change, because most of them still work, validator can correct the good ones and remove the very broken ones.
  • Someone sent a replay with 1 second time? It will be caught when validator checks it.

IMPLEMENTATION:
I simply started making a bot which
  • Opens the game
  • Go to levels list
  • Open leaderboard of the first level
  • Watch #1 player's replay
  • If timer went a lot higher than the entry, it's a broken replay which can't finish the level. Note this as a broken replay.
  • If replay ended nicely but timer shows a different time than entry, then it's a broken replay but it runs fine. Note this replay as good and update entry time with the time that timer shows.
  • If replay ended nicely and the timer shows exactly the same time as entry, then note this replay as good.
  • Watch repeat until #10 is watched
  • Open the next level's leaderboard
  • Repeat this for every level
  • Mark the verification status of the replays so verified ones won't be checked on the next run.

This was working really fine. But it takes incredibly long time to watch 10 replays of 80 levels. Lets say 15 seconds each replay, it makes 12000 seconds which is 200 minutes. That's way too long.

Just because I coded the game using Fixed timestep pattern, I was able to run the game as fast as I can without syncing it to the real time. Time shortened a lot because each replay ends very quickly.

This is how it looks like.

If you look closely, you'll notice that it could be even faster. How? Just close the game window and don't render anything. Whole game will run on the console, you don't need to see anything. Wanna go even further? Remove all the visual updates like particles and effects, disable everything which doesn't affect the gameplay.

And bam, it's now just a simulation, math and physics calculations. It will still run 100% correct as it is normally. Whole validation takes 2-4 minutes max when you need to check all of the replays. But as I wrote before, you mark the verified ones so they are being skipped instantly, no need to check again.

And here is an example output of the Replay Validator, after a gameplay change I did.



I strongly recommend having a similar system. Thanks for reading, I hope it's useful for you.
« Last Edit: May 31, 2017, 04:49:09 PM by naezith » Logged

tankorsmash
Level 1
*



View Profile
« Reply #315 on: July 13, 2017, 10:35:04 PM »

Looking good dude, pretty cool to see you're still trucking on this.
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #316 on: July 14, 2017, 01:02:30 AM »

Looking good dude, pretty cool to see you're still trucking on this.

Sometimes I am being very depressed when I don't feel the progress. I need to check some old screenshot/videos to realize that it really grows.

And yesterday, after almost 3 years, finally the graphic assets are complete!

Level count is also reached, we have 80 cool levels. Some secret levels are still missing but we have some extra gimmicky levels which can fit easily.

Check how tiny the to-do list is now:



Polishing and decoration are still huge tasks though so it might take time.  Wink
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #317 on: July 22, 2017, 05:34:20 AM »

Here is a new GIF for you!

https://twitter.com/naezith/status/888746878061473793
Logged

tankorsmash
Level 1
*



View Profile
« Reply #318 on: August 24, 2017, 04:25:30 PM »

Yeah man, I know what you're saying about polish, it's so much effort and tiny code tweaks that it ends up touching the entire codebase a lot of the time, and you can never really show off one small change because one by one they don't change much.

I think you started this when I had just started Beatup, and I know that by the end of that first year I was definitely tired of working on it, and my project was so much smaller scope than this one.

I'd actually love to try out a build of this, if you've got one.
Logged

naezith
Level 2
**


Remnants of Naezith


View Profile WWW
« Reply #319 on: August 26, 2017, 05:42:44 AM »

Yeah man, I know what you're saying about polish, it's so much effort and tiny code tweaks that it ends up touching the entire codebase a lot of the time, and you can never really show off one small change because one by one they don't change much.

I think you started this when I had just started Beatup, and I know that by the end of that first year I was definitely tired of working on it, and my project was so much smaller scope than this one.

I'd actually love to try out a build of this, if you've got one.

I'd let you know if I start inviting.

Here is a new GIF by the way:

https://twitter.com/naezith/status/901429471009546240
Logged

Pages: 1 ... 14 15 [16] 17
Print
Jump to:  

Theme orange-lt created by panic