Add server side game developer roadmap

pull/4640/head
Kamran Ahmed 1 year ago
parent 980e243124
commit 3deee4dfc3
  1. 28
      src/components/FrameRenderer/renderer.ts
  2. 7908
      src/data/roadmaps/game-developer/game-developer.json
  3. 5
      src/data/roadmaps/server-side-game-developer/faqs.astro
  4. 7452
      src/data/roadmaps/server-side-game-developer/server-side-game-developer.json
  5. 50
      src/data/roadmaps/server-side-game-developer/server-side-game-developer.md
  6. 3
      src/lib/roadmap.ts
  7. 34
      src/pages/index.astro

@ -7,10 +7,13 @@ import {
renderTopicProgress, renderTopicProgress,
updateResourceProgress, updateResourceProgress,
} from '../../lib/resource-progress'; } from '../../lib/resource-progress';
import type { ResourceProgressType, ResourceType } from '../../lib/resource-progress'; import type {
ResourceProgressType,
ResourceType,
} from '../../lib/resource-progress';
import { pageProgressMessage } from '../../stores/page'; import { pageProgressMessage } from '../../stores/page';
import { showLoginPopup } from '../../lib/popup'; import { showLoginPopup } from '../../lib/popup';
import {replaceChildren} from "../../lib/dom.ts"; import { replaceChildren } from '../../lib/dom.ts';
export class Renderer { export class Renderer {
resourceId: string; resourceId: string;
@ -95,7 +98,7 @@ export class Renderer {
.then(() => { .then(() => {
return renderResourceProgress( return renderResourceProgress(
this.resourceType as ResourceType, this.resourceType as ResourceType,
this.resourceId this.resourceId,
); );
}) })
.catch((error) => { .catch((error) => {
@ -143,7 +146,7 @@ export class Renderer {
this.jsonToSvg( this.jsonToSvg(
this.resourceType === 'roadmap' this.resourceType === 'roadmap'
? `/${this.resourceId}.json` ? `/${this.resourceId}.json`
: `/best-practices/${this.resourceId}.json` : `/best-practices/${this.resourceId}.json`,
); );
} }
} }
@ -183,7 +186,7 @@ export class Renderer {
resourceType: this.resourceType as ResourceType, resourceType: this.resourceType as ResourceType,
topicId, topicId,
}, },
newStatus newStatus,
) )
.then(() => { .then(() => {
renderTopicProgress(topicId, newStatus); renderTopicProgress(topicId, newStatus);
@ -217,7 +220,7 @@ export class Renderer {
const normalizedGroupId = groupId.replace(/^\d+-/, ''); const normalizedGroupId = groupId.replace(/^\d+-/, '');
this.updateTopicStatus( this.updateTopicStatus(
normalizedGroupId, normalizedGroupId,
!isCurrentStatusDone ? 'done' : 'pending' !isCurrentStatusDone ? 'done' : 'pending',
); );
} }
@ -243,9 +246,12 @@ export class Renderer {
action: `${this.resourceType} / ${this.resourceId}`, action: `${this.resourceType} / ${this.resourceId}`,
label: externalLink, label: externalLink,
}); });
window.open(`https://${externalLink}`);
} else {
window.location.href = `https://${externalLink}`;
} }
window.open(`https://${externalLink}`);
return; return;
} }
@ -265,7 +271,7 @@ export class Renderer {
resourceType: this.resourceType, resourceType: this.resourceType,
resourceId: this.resourceId, resourceId: this.resourceId,
}, },
}) }),
); );
return; return;
} }
@ -280,7 +286,7 @@ export class Renderer {
e.preventDefault(); e.preventDefault();
this.updateTopicStatus( this.updateTopicStatus(
normalizedGroupId, normalizedGroupId,
!isCurrentStatusLearning ? 'learning' : 'pending' !isCurrentStatusLearning ? 'learning' : 'pending',
); );
return; return;
} }
@ -289,7 +295,7 @@ export class Renderer {
e.preventDefault(); e.preventDefault();
this.updateTopicStatus( this.updateTopicStatus(
normalizedGroupId, normalizedGroupId,
!isCurrentStatusSkipped ? 'skipped' : 'pending' !isCurrentStatusSkipped ? 'skipped' : 'pending',
); );
return; return;
@ -302,7 +308,7 @@ export class Renderer {
resourceId: this.resourceId, resourceId: this.resourceId,
resourceType: this.resourceType, resourceType: this.resourceType,
}, },
}) }),
); );
} }

File diff suppressed because it is too large Load Diff

@ -0,0 +1,5 @@
---
import type { FAQType } from '../../components/FAQs/FAQs.astro';
export const faqs: FAQType[] = [];
---

@ -0,0 +1,50 @@
---
pdfUrl: '/pdfs/roadmaps/server-side-game-developer.pdf'
order: 17
briefTitle: 'Server Side Game Developer'
briefDescription: 'Roadmap to becoming a Server Side Game Developer in 2023'
title: 'Server Side Game Developer'
description: 'Roadmap to becoming a Server Side Game Developer in 2023'
hasTopics: true
isNew: true
isHidden: true
schema:
headline: 'Server Side Game Developer Roadmap'
description: 'Learn what Server Side Game Development is, what server side game developers do and how to become one using our community-driven roadmap.'
imageUrl: 'https://roadmap.sh/roadmaps/server-side-game-developer.png'
datePublished: '2023-10-26'
dateModified: '2023-10-26'
seo:
title: 'Server Side Game Developer Roadmap'
description: 'Learn what Server Side Game Development is, what server side game developers do and how to become one using our community-driven roadmap.'
keywords:
- 'server side game developer roadmap 2023'
- 'server side game developer roadmap 2023'
- 'guide to becoming a server side game developer'
- 'guide to becoming a server side game developer'
- 'server side game developer roadmap'
- 'server side game developer'
- 'server side game engineer'
- 'server side game skills'
- 'server side game development'
- 'server side game development skills'
- 'server side game development skills test'
- 'server side game engineer roadmap'
- 'server side game developer roadmap'
- 'become a server side game developer'
- 'server side game developer career path'
- 'skills for game development'
- 'learn server side game development'
- 'what is server side game development'
- 'server side game developer quiz'
- 'server side game developer interview questions'
relatedRoadmaps:
- 'backend'
sitemap:
priority: 1
changefreq: 'monthly'
tags:
- 'roadmap'
- 'main-sitemap'
- 'role-roadmap'
---

@ -8,7 +8,8 @@ export interface RoadmapFrontmatter {
title: string; title: string;
description: string; description: string;
hasTopics: boolean; hasTopics: boolean;
isForkable: boolean; isForkable?: boolean;
isHidden: boolean;
isNew: boolean; isNew: boolean;
isUpcoming: boolean; isUpcoming: boolean;
tnsBannerLink?: string; tnsBannerLink?: string;

@ -29,26 +29,30 @@ const videos = await getAllVideos();
<FeaturedItems <FeaturedItems
heading='Role based Roadmaps' heading='Role based Roadmaps'
featuredItems={roleRoadmaps.map((roadmapItem) => ({ featuredItems={roleRoadmaps
text: roadmapItem.frontmatter.briefTitle, .filter((roadmapItem) => !roadmapItem.frontmatter.isHidden)
url: `/${roadmapItem.id}`, .map((roadmapItem) => ({
isNew: roadmapItem.frontmatter.isNew, text: roadmapItem.frontmatter.briefTitle,
isUpcoming: roadmapItem.frontmatter.isUpcoming, url: `/${roadmapItem.id}`,
}))} isNew: roadmapItem.frontmatter.isNew,
isUpcoming: roadmapItem.frontmatter.isUpcoming,
}))}
showCreateRoadmap={true} showCreateRoadmap={true}
/> />
<FeaturedItems <FeaturedItems
heading='Skill based Roadmaps' heading='Skill based Roadmaps'
featuredItems={skillRoadmaps.map((roadmapItem) => ({ featuredItems={skillRoadmaps
text: .filter((roadmapItem) => !roadmapItem.frontmatter.isHidden)
roadmapItem.frontmatter.briefTitle === 'Go' .map((roadmapItem) => ({
? 'Go Roadmap' text:
: roadmapItem.frontmatter.briefTitle, roadmapItem.frontmatter.briefTitle === 'Go'
url: `/${roadmapItem.id}`, ? 'Go Roadmap'
isNew: roadmapItem.frontmatter.isNew, : roadmapItem.frontmatter.briefTitle,
isUpcoming: roadmapItem.frontmatter.isUpcoming, url: `/${roadmapItem.id}`,
}))} isNew: roadmapItem.frontmatter.isNew,
isUpcoming: roadmapItem.frontmatter.isUpcoming,
}))}
showCreateRoadmap={true} showCreateRoadmap={true}
/> />

Loading…
Cancel
Save