I can see what you asked, but let's approach this from a different direction. The direct question of "are there any good books" will just create a library that you'll never read.
One approach is the for us to play 20 questions with you. Can you already make a "Guess the Number" game? Can you already make a Tic Tac Toe game? Can you make a Connect Four clone? Can you make a Pong clone? A Tetris clone? A Breakout clone? A Space Invaders clone? An Asteroids clone? Can you make a Galaga clone? Can you make a Super Mario Bros clone? Can you make them with multiple players on a single machine? Can you make them with persistent high scores systems? Can you make network chat clients? Can you embed a chat client into your game?
If you answered "yes" to all of them, congratulations. you don't need those books. Otherwise, stop at the first "no" and we can help you grow from there.
Or we can approach this assuming you know a bit more, with broader questions.
On what technology scale are you looking to build? What tools are you planning on using?
You could start with RPG Maker and put together a fairly good RPG with very little work, and with minimal software development skill. Even game development beginners can turn out a decent (yet small) game in a few days with that. You might try building something with GameMaker:Studio or GameSalad or Construct, they're rather comprehensive and easy to use even for people not familiar with programming. You might try something even bigger requiring more skills and effort, such as using Unreal or Unity as your engine, developing on from there. You might try simpler tools and libraries, maybe leverage SDL or Marmalade or LibGDX or Cocos2D-x, or any other libraries. Or you might be considering building everything from scratch yourself, which is about the most ambitious plan.
Is anything blocking you from using those tools effectively?
Do you have what it takes to build the game you want with those tools? If you're using tools for C++, or C#, or Java, or some other language, do you know them well enough to build what you want to build? If not, there is your thing to learn. Do you need more knowledge or more experience on specific topics within those tools? Only you know what you already know on the topics. Maybe you have minimal skill with the language. Maybe you're somewhat experienced with simple programming but need to learn more about specific topics, perhaps algorithms and data structures regarding containers, or searching, or graph manipulation, or state machines, or IPC, or networking, or whatever else.
You mention learning about server side, so you may need to get comfortable working with databases, get comfortable with writing communications libraries and protocols, get comfortable working with connectivity meshes and data persistence requirements, or keeping data consistent between machines, or working with locked resources, or understanding data isolation levels.
If you already know how to use those tools effectively, then try again with the first list. Can you make "guess the number" using the tools? Connect four? Pong? Tetris-style and Breakout-style games? Networked chat? Networked Tetris-style and Breakout-style games? Galaga-style shooters? Networked Galaga-style shooters?
At some point there is a boundary; one thing you are able to make today, the other thing you currently lack the skills or experience to make. Nobody knows what you should be learning (not even you) until you understand where that boundary is.
We need to understand what it is that you want to learn. With that we can direct you to resources to help you learn it.