Web/blog/big_projects.md

327 lines
24 KiB
Markdown
Raw Normal View History

2019-09-15 16:49:08 +02:00
So I'm releasing a game soon. In December, to be exact. Here's some stuff I did and learned after telling myself that [Foe Frenzy](https://ellpeck.itch.io/FoeFrenzy) would be a [Small Project](https://ellpeck.de/#blog-small_projects) until it suddenly became the first game I'd ever release as a commercial product.
# In Discord
After deciding that I'd only be selling my game on itch.io, I quickly realized that that might not be the best of ideas in the long run, because few people actually know about the platform - despite it being pretty great.
So I decided to also sell the game on Discord - the Skype-Teamspeak-IRC-hybrid that recently also became a game store. As it turns out, this was *surprisingly* easy: All you have to do is pay $25, go through a really well organized checklist that is provided in Discord's usual jokey writing style and submit. Tada! Your game's on Discord now.
By the way, in case you actually want to see what Foe Frenzy's Discord store page currently looks like before release, you should [join my Discord](https://ellpeck.de/discord) and check out its `#ff-store` channel (on Desktop). It looks pretty snazzy!
## Oh, also:
As it turns out, Discord has a game SDK. And Achievement support. And Lobbies, and Multiplayer, and Invites.
And surprisingly, integrating all of that with Foe Frenzy wasn't necessarily the breeziest breeze ever, as I didn't really have any example implementations or anything of the sort at hand, but it worked out in the end!
Foe Frenzy will have full compatibility with Discord's Multiplayer features. What does this include, you ask?
* After hosting a Multiplayer game from Foe Frenzy, you can invite your friends to play with you through the simple click of a button: <blockquote class="twitter-tweet"><p lang="en" dir="ltr">You&#39;ll also be able to easily invite people from inside the game! <a href="https://t.co/f3dixbwnxD">pic.twitter.com/f3dixbwnxD</a></p>&mdash; Ell (@Ellpeck) <a href="https://twitter.com/Ellpeck/status/1172990814072557573?ref_src=twsrc%5Etfw">September 14, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
* When receiving an invite, you can simply click the Join button which will launch the game and instantly send you into your friend's online lobby: <blockquote class="twitter-tweet"><p lang="en" dir="ltr">SOMETHING IS COMING <a href="https://t.co/ZWVUuRDhD3">pic.twitter.com/ZWVUuRDhD3</a></p>&mdash; Ell (@Ellpeck) <a href="https://twitter.com/Ellpeck/status/1172954763803136001?ref_src=twsrc%5Etfw">September 14, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
* From there, you can play online without needing to expose your IP, fiddle around with your router settings or really do anything else.
* And have I mentioned... you'll be able to use these features even when buying the game from itch.io, you'll be able to combine Discord and IP-based multiplayer, and you'll even be able to combine online multiplayer and local multiplayer! *So many possibilities!*
So yea. That's pretty exciting.
# Music and Trailer
So for a rather long time now, I've been watching a YouTuber called [ThinMatrix](https://youtube.com/ThinMatrix) develop his own game, and simultaneously listening to the amazing music for said game, created by the lovely [Jamal Green](https://twitter.com/JamalGreenMusic).
So after some contemplating (and a lot of anxiety), I decided to send him an email, and quite quickly, he replied and said that, yes indeed, he would love to create the soundtrack for Foe Frenzy. So that's what he's doing now, and it's super awesome.
In case you haven't seen it yet, here's the announcement trailer for the game which features the awesome trailer theme that he created:
<iframe width="560" height="315" src="https://www.youtube.com/embed/Z7ZeuVBNuf4" frameborder="0" allow="accelerometer; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
So the moral of that is basically: If you like an artist and want to cooperate with them, don't be scared to message them - the worst that can happen is they say no, and the best that can happen is that they create an awesome soundtrack for you!
# The whole platform issue
If you read all of my blog posts, you'll know about the previous one I made about me trying to figure out how to get a MonoGame project to work well cross-platform without having to upgrade to the not-yet-well-supported .NET Core.
As it turns out, all I had to do was actually use versions of .NET Framework and netstandard (which is another build target that can be quite confusing to people that aren't used to the whole .NET environment and the weird state it's currently in) that actually, you know, *are compatible with each other*. So after sorting that out, I made [a little tool](https://github.com/Ellpeck/MonoKickstartAutoBundle) that allows you to easily pack any .NET Framework application with Mono without having to even do so much as break a sweat. So that was quite handy.
# Oh God, what if no one buys my game
Obviously, I have a lot of anxiety, as my Twitter feed, the `#feels` channel on my Discord and my therapist make pretty clear.
So a feeling I have almost *constantly* is the fear that my game won't go well. That no one will care, that no one will buy it, that no one will enjoy it, that it'll be rated horribly, that YouTubers will make fun of it, that... honestly, so many more stupid fears. And obviously, the release hasn't happened yet, and so those fears are still there. But the best advice I can give is to just power through those fears if you also have them, because, as with the e-mail, the worst thing that can happen is that they come true - but the best thing that can happen is that they won't. So, really, the only way it can go is up.
But also, in case you *do* buy the game once it comes out, and in case you also like it, please tell me. It would mean the world to me. Thanks so much.
2019-10-03 23:07:39 +02:00
Also, thanks for reading. <3
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ellpeck.de</title>
<meta name="author" content="Ellpeck">
<meta name="description" content="Ellpeck's little internet place">
<meta name="keywords" content="Ellpeck, Actually Additions, Rock Bottom, Programming, Minecraft, Game Development, Nature's Aura">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto">
<link rel="stylesheet" href="lib/prettify.css">
<link rel="stylesheet" href="style.css">
<link rel="icon" href="favicon.ico">
<meta name="og:title" content="Ellpeck.de">
<meta name="og:description" content="Ellpeck's little internet place">
<meta name="og:image" content="https://www.ellpeck.de/res/logoSmall.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@Ellpeck">
<meta name="twitter:creator" content="@Ellpeck">
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/showdown@1.9.0/dist/showdown.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/prettify.js"></script>
<script src="lib/showdown-prettify.js"></script>
<script src="scripts/main.js"></script>
</head>
<body data-spy="scroll" data-target="#navbar">
<!-- Navbar -->
<nav class="navbar fixed-top navbar-expand-lg navbar-light bg-light rounded-bottom" id="navbar">
<script src="scripts/navbar.js"></script>
<!-- Navbar brand and logo -->
<a class="navbar-brand mb-0 h1" href="#">
<img src="res/logo.png" width="40" height="40" alt=""> Ellpeck.de
</a>
<!-- Responsive navbar menu opener -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-content">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar content -->
<div class="collapse navbar-collapse" id="navbar-content">
<div class="navbar-nav mr-auto">
<a class="nav-item nav-link" href="#projects">Projects</a>
<a class="nav-item nav-link" href="#social">Social</a>
<a class="nav-item nav-link" href="#about">About</a>
<a class="nav-item nav-link" href="#blog">Blog</a>
</div>
<span class="navbar-text">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="dark-mode">
<label class="custom-control-label" for="dark-mode">Dark Mode</label>
</div>
</span>
</div>
</nav>
<!-- Content -->
<div class="container main">
<!-- Home -->
<div class="jumbotron">
<div class="container">
<div class="row">
<div class="col-md-auto">
<img src="res/me.png" class="rounded-circle" width="200" height="200" id="navbar-image">
</div>
<div class="col">
<h1 class="display-4" id="intro-text"></h1>
<script src="scripts/greet.js"></script>
<p class="lead">Welcome to my little website! I'm Ellpeck, a student and programmer from Germany. I do a lot of stuff, actually. My life is pretty busy.</p>
<p>Look around this website to find out more about my projects and other places you can find me!</p>
</div>
</div>
</div>
</div>
<!-- Cookie notification -->
<script src="scripts/cookies.js"></script>
<!-- Projects -->
<a class="anchor" id="projects"></a>
<div class="list-display rounded">
<h1>Projects</h1>
<p>
Here is a list of some of the things that you might know me from. If you want to have a more in-depth look at everything I do, check out some of the sites linked in the <a href="#social">Social</a> section.
</p>
<div id="project-list">
<em>The content that should be here is dynamically generated. Please enable JavaScript if you see this.</em>
</div>
<script src="scripts/projects.js"></script>
</div>
<!-- Social -->
<a class="anchor" id="social"></a>
<div class="list-display rounded">
<h1>Social</h1>
<p>
These are other websites where you can find me and the things I do, including the pages where I publish my code and games and where I sometimes stream and upload videos. This list also includes a lot of ways to reach me.
</p>
<div class="row">
<div class="col">
<div id="social-list">
<em>The content that should be here is dynamically generated. Please enable JavaScript if you see this.</em>
</div>
Additionally, here are some miscellaneous platforms:
<ul>
<li>My Nintendo Switch friend code is <strong>SW-5281-8834-6801</strong></li>
<li>If you want to play my Mario Maker 2 levels, my ID is <strong>8BH-566-4WF</strong></li>
<li>If you play The Sims 4, you can check out my builds on the gallery by searching for <strong>Ellpeck</strong></li>
</ul>
</div>
<div class="col-md-auto" id="discord-div">
<em>The content that should be here is dynamically generated. Please enable JavaScript if you see this.</em>
</div>
</div>
<script src="scripts/social.js"></script>
</div>
<!-- About -->
<a class="anchor" id="about"></a>
<div class="list-display rounded">
<h1>About</h1>
<p>
Sometimes, some people ask me some questions about myself or my projects, so I decided to compile a list of some of the answers in a Q&A-like fashion so that I don't have to keep repeating them. If you're curious about me, this might be interesting to you!
</p>
<div id="about-list">
<em>The content that should be here is dynamically generated. Please enable JavaScript if you see this.</em>
</div>
<script src="scripts/about.js"></script>
</div>
<!-- Blog -->
<a class="anchor" id="blog"></a>
<div class="list-display rounded">
<h1>Blog</h1>
<p>
Occasionally I enjoy writing stuff. So here's some of the stuff I've written. Just click on any of the headers to expand the post.
</p>
<div id="blog-list">
<em>The content that should be here is dynamically generated. Please enable JavaScript if you see this.</em>
</div>
<script src="scripts/blog.js"></script>
</div>
</div>
<!-- Footer -->
<div class="footer rounded-top">
<span class="text-muted"><a href="https://github.com/Ellpeck/Web">&copy; 2018-2019 Ellpeck</a> &ndash; <a id="impressum-button" href="#impressum">Impressum</a></span>
<div class="quote">
<span id="quote-text"></span>
<script src="scripts/quote.js"></script>
<img src="res/blobheart.png" id="blobheart">
</div>
</div>
<!-- Commissions -->
<div class="modal fade" id="commissions-modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title">Ellpeck's Minecraft Mod Commissions</h1>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body">
<p>If you need a small to medium sized Minecraft mod for a modpack, a video or for personal use, you can contact me to make it for you.</p>
<p>Here is all the information you need if you want to commission me to make a mod for you:</p>
<ul>
<li>Minecraft Forge mods only</li>
<li>Minecraft Versions 1.10 through 1.13 only</li>
<li>No ports of existing mods</li>
<li>I charge between 10€ ($11) and 30€ ($33) an hour
<ul>
<li>I estimate the total amount of time it will take based on the size and complexity of the mod beforehand</li>
<li>The amount I estimate will be what you pay for, no matter how much longer or shorter it actually takes</li>
</ul>
</li>
<li>You will have the choice of whether you want to receive the source code privately or whether I should publish it on GitHub</li>
<li>You will have the choice of whether you want to be sent the mod jar or whether I should publish the mod on CurseForge</li>
<li>After the mod is completed, bug fixes are included for free, but feature updates and Minecraft version updates are not</li>
</ul>
<p>If you're interested, you can either <a href="mailto:me@ellpeck.de">send me an email</a>, but better yet, <a href="https://ellpeck.de/discord">join my Discord server</a> and message me privately from there so we can talk about the details.</p>
</div>
</div>
</div>
</div>
<!-- Impressum -->
<div class="modal fade" id="impressum-modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Impressum</h5>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<div class="modal-body">
<span class="text-muted">If you don't know what this is, read up on it <a href="https://en.wikipedia.org/wiki/Impressum">here</a> or just ignore it.</span>
<div class="impressum-data">
Julian Schubert
<br>Kastanienweg 27
<br>52074 Aachen
<br>Telefon: 0241 45093753
<br>E-Mail: me@ellpeck.de
</div>
<p>
Verantwortlich für den Inhalt (gem. § 55 Abs. 2 RStV):
<br>Siehe oben
</p>
<h3>Disclaimer rechtliche Hinweise</h3>
<h4>§ 1 Haftungsbeschränkung</h4>
<p>
Die Inhalte dieser Website werden mit größtmöglicher Sorgfalt erstellt. Der Anbieter übernimmt jedoch keine Gewähr für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Inhalte. Die Nutzung der Inhalte der Website erfolgt auf eigene
Gefahr des Nutzers. Namentlich gekennzeichnete Beiträge geben die Meinung des jeweiligen Autors und nicht immer die Meinung des Anbieters wieder. Mit der reinen Nutzung der Website des Anbieters kommt keinerlei Vertragsverhältnis
zwischen dem Nutzer und dem Anbieter zustande.
</p>
<h4>§ 2 Externe Links</h4>
<p>
Diese Website enthält Verknüpfungen zu Websites Dritter (“externe Links”). Diese Websites unterliegen der Haftung der jeweiligen Betreiber. Der Anbieter hat bei der erstmaligen Verknüpfung der externen Links die fremden Inhalte daraufhin überprüft, ob
etwaige Rechtsverstöße bestehen. Zu dem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Der Anbieter hat keinerlei Einfluss auf die aktuelle und zukünftige Gestaltung und auf die Inhalte der verknüpften Seiten. Das Setzen von
externen Links bedeutet nicht, dass sich der Anbieter die hinter dem Verweis oder Link liegenden Inhalte zu Eigen macht. Eine ständige Kontrolle der externen Links ist für den Anbieter ohne konkrete Hinweise auf Rechtsverstöße
nicht zumutbar. Bei Kenntnis von Rechtsverstößen werden jedoch derartige externe Links unverzüglich gelöscht.
</p>
<h4>§ 3 Urheber- und Leistungsschutzrechte</h4>
<p>
Die auf dieser Website veröffentlichten Inhalte unterliegen dem deutschen Urheber- und Leistungsschutzrecht. Jede vom deutschen Urheber- und Leistungsschutzrecht nicht zugelassene Verwertung bedarf der vorherigen schriftlichen Zustimmung des Anbieters
oder jeweiligen Rechteinhabers. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Inhalte
und Rechte Dritter sind dabei als solche gekennzeichnet. Die unerlaubte Vervielfältigung oder Weitergabe einzelner Inhalte oder kompletter Seiten ist nicht gestattet und strafbar. Lediglich die Herstellung von Kopien und Downloads
für den persönlichen, privaten und nicht kommerziellen Gebrauch ist erlaubt.
<br>Die Darstellung dieser Website in fremden Frames ist nur mit schriftlicher Erlaubnis zulässig.
</p>
<h4>§ 4 Besondere Nutzungsbedingungen</h4>
<p>
Soweit besondere Bedingungen für einzelne Nutzungen dieser Website von den vorgenannten Paragraphen abweichen, wird an entsprechender Stelle ausdrücklich darauf hingewiesen. In diesem Falle gelten im jeweiligen Einzelfall die besonderen Nutzungsbedingungen.
</p>
<h3>Datenschutzerklärung</h3>
<h4>Datenschutz</h4>
<p>
Nachfolgend möchten wir Sie über unsere Datenschutzerklärung informieren. Sie finden hier Informationen über die Erhebung und Verwendung persönlicher Daten bei der Nutzung unserer Webseite. Wir beachten dabei das für Deutschland geltende Datenschutzrecht.
Sie können diese Erklärung jederzeit auf unserer Webseite abrufen.
<br>Wir weisen ausdrücklich darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen und nicht lückenlos vor dem Zugriff durch Dritte geschützt werden kann.
<br>Die Verwendung der Kontaktdaten unseres Impressums zur gewerblichen Werbung ist ausdrücklich nicht erwünscht, es sei denn wir hatten zuvor unsere schriftliche Einwilligung erteilt oder es besteht bereits eine Geschäftsbeziehung.
Der Anbieter und alle auf dieser Website genannten Personen widersprechen hiermit jeder kommerziellen Verwendung und Weitergabe ihrer Daten.
</p>
<h4>Personenbezogene Daten</h4>
<p>
Sie können unsere Webseite ohne Angabe personenbezogener Daten besuchen. Soweit auf unseren Seiten personenbezogene Daten (wie Name, Anschrift oder E-Mail Adresse) erhoben werden, erfolgt dies, soweit möglich, auf freiwilliger Basis. Diese Daten werden
ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben. Sofern zwischen Ihnen und uns ein Vertragsverhältnis begründet, inhaltlich ausgestaltet oder geändert werden soll oder Sie an uns eine Anfrage stellen, erheben und
verwenden wir personenbezogene Daten von Ihnen, soweit dies zu diesen Zwecken erforderlich ist (Bestandsdaten). Wir erheben, verarbeiten und nutzen personenbezogene Daten soweit dies erforderlich ist, um Ihnen die Inanspruchnahme
des Webangebots zu ermöglichen (Nutzungsdaten). Sämtliche personenbezogenen Daten werden nur solange gespeichert wie dies für den geannten Zweck (Bearbeitung Ihrer Anfrage oder Abwicklung eines Vertrags) erforderlich ist. Hierbei
werden steuer- und handelsrechtliche Aufbewahrungsfristen berücksichtigt. Auf Anordnung der zuständigen Stellen dürfen wir im Einzelfall Auskunft über diese Daten (Bestandsdaten) erteilen, soweit dies für Zwecke der Strafverfolgung,
zur Gefahrenabwehr, zur Erfüllung der gesetzlichen Aufgaben der Verfassungsschutzbehörden oder des Militärischen Abschirmdienstes oder zur Durchsetzung der Rechte am geistigen Eigentum erforderlich ist.
</p>
<h4>Auskunftsrecht</h4>
<p>
Sie haben das jederzeitige Recht, sich unentgeltlich und unverzüglich über die zu Ihrer Person erhobenen Daten zu erkundigen. Sie haben das jederzeitige Recht, Ihre Zustimmung zur Verwendung Ihrer angegeben persönlichen Daten mit Wirkung für die Zukunft
zu widerrufen. Zur Auskunftserteilung wenden Sie sich bitte an den Anbieter unter den Kontaktdaten im Impressum.
</p>
<em>Quelle: Impressum Muster von impressum-recht.de</em>
</div>
</div>
</div>
</div>
</body>
</html>
```