diff --git a/.forgejo/workflows/main.yml b/.forgejo/workflows/main.yml index 628ed46..8084f8a 100644 --- a/.forgejo/workflows/main.yml +++ b/.forgejo/workflows/main.yml @@ -4,8 +4,6 @@ on: jobs: web: runs-on: ubuntu-latest - env: - BUNDLE_GEMFILE: ${{ github.workspace }}/main/Gemfile steps: - name: Clone repository uses: actions/checkout@v4 @@ -17,14 +15,14 @@ jobs: bundler-cache: true - name: Build - run: cd main && bundle exec jekyll build + run: bundle exec jekyll build - name: Deploy run: | apt update && apt install -y rsync curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared.deb echo "${{ secrets.ELLBOT_KEY }}" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa - rsync -rv --delete -e 'ssh -o "ProxyCommand cloudflared access ssh --hostname %h" -o "StrictHostKeyChecking=no"' main/_site/ ellbot@ssh.ellpeck.de:/var/www/ellpeck + rsync -rv --delete -e 'ssh -o "ProxyCommand cloudflared access ssh --hostname %h" -o "StrictHostKeyChecking=no"' _site/ ellbot@ssh.ellpeck.de:/var/www/ellpeck - name: Purge Cloudflare cache uses: https://github.com/NathanVaughn/actions-cloudflare-purge@v3.1.0 with: diff --git a/main/.htaccess b/.htaccess similarity index 100% rename from main/.htaccess rename to .htaccess diff --git a/main/404.html b/404.html similarity index 100% rename from main/404.html rename to 404.html diff --git a/main/Gemfile b/Gemfile similarity index 100% rename from main/Gemfile rename to Gemfile diff --git a/main/Gemfile.lock b/Gemfile.lock similarity index 100% rename from main/Gemfile.lock rename to Gemfile.lock diff --git a/main/_config.yaml b/_config.yaml similarity index 90% rename from main/_config.yaml rename to _config.yaml index 34524c6..51079ee 100644 --- a/main/_config.yaml +++ b/_config.yaml @@ -1,5 +1,9 @@ permalink: blog/:title/ +exclude: + - .forgejo + - .gitignore + plugins: - jekyll-feed - jekyll-postfiles diff --git a/main/_data/about.json b/_data/about.json similarity index 100% rename from main/_data/about.json rename to _data/about.json diff --git a/main/_data/projects.json b/_data/projects.json similarity index 100% rename from main/_data/projects.json rename to _data/projects.json diff --git a/main/_data/socials.json b/_data/socials.json similarity index 100% rename from main/_data/socials.json rename to _data/socials.json diff --git a/main/_data/support.json b/_data/support.json similarity index 100% rename from main/_data/support.json rename to _data/support.json diff --git a/main/_includes/about.html b/_includes/about.html similarity index 100% rename from main/_includes/about.html rename to _includes/about.html diff --git a/main/_includes/anchor_headings.html b/_includes/anchor_headings.html similarity index 100% rename from main/_includes/anchor_headings.html rename to _includes/anchor_headings.html diff --git a/main/_includes/blog.html b/_includes/blog.html similarity index 100% rename from main/_includes/blog.html rename to _includes/blog.html diff --git a/main/_includes/footer.html b/_includes/footer.html similarity index 100% rename from main/_includes/footer.html rename to _includes/footer.html diff --git a/main/_includes/nav/blognav.html b/_includes/nav/blognav.html similarity index 100% rename from main/_includes/nav/blognav.html rename to _includes/nav/blognav.html diff --git a/main/_includes/nav/indexnav.html b/_includes/nav/indexnav.html similarity index 100% rename from main/_includes/nav/indexnav.html rename to _includes/nav/indexnav.html diff --git a/main/_includes/nav/miscnav.html b/_includes/nav/miscnav.html similarity index 100% rename from main/_includes/nav/miscnav.html rename to _includes/nav/miscnav.html diff --git a/main/_includes/nav/navbar.html b/_includes/nav/navbar.html similarity index 100% rename from main/_includes/nav/navbar.html rename to _includes/nav/navbar.html diff --git a/main/_includes/post.html b/_includes/post.html similarity index 98% rename from main/_includes/post.html rename to _includes/post.html index 9fccdd1..2407e8f 100644 --- a/main/_includes/post.html +++ b/_includes/post.html @@ -1,7 +1,7 @@ -
+ diff --git a/main/_includes/projects.html b/_includes/projects.html similarity index 100% rename from main/_includes/projects.html rename to _includes/projects.html diff --git a/main/_includes/social.html b/_includes/social.html similarity index 100% rename from main/_includes/social.html rename to _includes/social.html diff --git a/main/_includes/support.html b/_includes/support.html similarity index 100% rename from main/_includes/support.html rename to _includes/support.html diff --git a/main/_includes/tagbtn.html b/_includes/tagbtn.html similarity index 100% rename from main/_includes/tagbtn.html rename to _includes/tagbtn.html diff --git a/main/_layouts/blog.html b/_layouts/blog.html similarity index 97% rename from main/_layouts/blog.html rename to _layouts/blog.html index 2c7875b..5023267 100644 --- a/main/_layouts/blog.html +++ b/_layouts/blog.html @@ -1,79 +1,79 @@ ---- -layout: default -nav: nav/blognav.html ---- - - - -{% if page.book %} - -{% else %} - -{% endif %} - -π§ This post has been archived.
- {% endif %} - - {% if page.mature %} -β οΈ This post contains mature content.
- {% endif %} - - {% if page.reedsy %} -π This story was inspired by a Reedsy Prompt and submitted to their competition. As such, it has also been published on their website.
- {% endif %} - -If you liked this blog post, you can subscribe to the mailing list to be notified of new posts and occasional special content. I promise not to send too many emails, but you can always unsubscribe easily, too.
- - - -π° Alternatively, you can also subscribe to this blog through the Atom feed.
-π§ This post has been archived.
+ {% endif %} + + {% if page.mature %} +β οΈ This post contains mature content.
+ {% endif %} + + {% if page.reedsy %} +π This story was inspired by a Reedsy Prompt and submitted to their competition. As such, it has also been published on their website.
+ {% endif %} + +If you liked this blog post, you can subscribe to the mailing list to be notified of new posts and occasional special content. I promise not to send too many emails, but you can always unsubscribe easily, too.
+ + + +π° Alternatively, you can also subscribe to this blog through the Atom feed.
+-* 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:You'll also be able to easily invite people from inside the game! pic.twitter.com/f3dixbwnxD
— Ell (@Ellpeck) September 14, 2019
-* 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: - - - -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. - -Also, thanks for reading. <3 +--- +layout: blog +title: βοΈ Big Projects +description: "How a once small project I even created a post about turned into the first game I'm selling: Foe Frenzy" +tags: [Programming] +discuss: https://twitter.com/Ellpeck/status/1173247686654517249 +--- + +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://link.ellpeck.de/discordweb) 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:SOMETHING IS COMING pic.twitter.com/ZWVUuRDhD3
— Ell (@Ellpeck) September 14, 2019
+* 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:You'll also be able to easily invite people from inside the game! pic.twitter.com/f3dixbwnxD
— Ell (@Ellpeck) September 14, 2019
+* 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: + + + +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. + +Also, thanks for reading. <3 diff --git a/main/_posts/2019-10-10-java_1.md b/_posts/2019-10-10-java_1.md similarity index 98% rename from main/_posts/2019-10-10-java_1.md rename to _posts/2019-10-10-java_1.md index 74f435e..489ee2a 100644 --- a/main/_posts/2019-10-10-java_1.md +++ b/_posts/2019-10-10-java_1.md @@ -1,104 +1,104 @@ ---- -layout: blog -title: "β Java Tutorial, Part 1: Hello World" -description: The first part of my post series for programming beginners where I explain how to write code in Java. -tags: [Programming] -discuss: https://twitter.com/Ellpeck/status/1182080078827737088 -archived: true ---- - -So you want to learn to code. In my opinion, a good language for beginners is Java, because it's a rather easy to understand language, and it's cross-platform, meaning it can run on any operating system without the need for the programmer (you!) to change anything based on the platform. Also, Java is object-oriented (more on that later), meaning it's pretty good for writing any sort of simple or complex program.[^1] - -So let's start! - -# Setting it up -To actually be able to compile[^2] any Java code, you first need to download the [Java Development Kit](https://jdk.java.net/), or JDK for short. If you're a Linux or Mac user, you can just follow [their installation tutorial](https://openjdk.java.net/install/), and if you're on Windows, you can follow [this tutorial from Stack Overflow](https://stackoverflow.com/a/52531093). To check if the installation worked, you can just type `java -version` into a command prompt (which you can open on Windows by just typing `cmd` into your search). - -Some people might disagree with me on this, but I recommend using an Integrated Development Environment (IDE) for development *especially* when you're just starting out. An IDE is a program that helps you with coding by suggesting changes, notifying you of errors in your code and also allows you to easily run and debug your application. My personal suggestion would be to install [IntelliJ IDEA](https://www.jetbrains.com/idea/), but you could also use other IDEs like [Eclipse](https://www.eclipse.org/downloads/). - -The next thing you'll have to do is create a new project inside your IDE. For IntelliJ, all you have to do is click `New Project`, select `Java`, click `Next` twice and then type your project's name. I'm going to go with `JavaTutorial` for mine. - -# Hello World -Once that's done, we can finally start programming. At first, you'll find that a lot of the stuff we're doing isn't explained directly, but I'll come back to some of the things I'm showing you now at a later point. Things like classes, methods and parameters probably won't make sense to you yet, but using them is required for even the most basic of running programs. - -The first thing we want to do is create a simple program that outputs something back to the user inside of the program's console. To start, simply right click your `src` folder and select `New` and `Java Class` and give it a name like `Main`. I'll show you the code for it first and then give you a quick rundown of the important parts you need to know about it for now. - -```java -public class Main { - public static void main(String[] args) { - System.out.println("Hello Tutorial World!"); - } -} -``` -That's it! If you now run your program (for IntelliJ, there should be a small green arrow to the left that you can click on), it'll print out the message to the console and then stop the program. - -A lot of the code you see above doesn't *really* matter to you right now. The important stuff is this: -- Each instruction, each thing that the program should do, ends with a semicolon `;` and usually a new line, though that is optional. -- Any instruction you write between the inner curly braces `{}` will be executed in order of how it's written. -- `System.out.println("SOMETHING IS COMING pic.twitter.com/ZWVUuRDhD3
— Ell (@Ellpeck) September 14, 2019
Hi, I'm Ellpeck, a student and programmer from Germany. I've been making Minecraft mods for over 6 years, and during that time, I created some popular mods like Actually Additions and Nature's Aura. If you want to know more about my projects, you should check out my website.
-Recently, I started accepting commissions for mods as well. If you want a Minecraft mod of any size and complexity made, I can do that for you. You can check out the terms and pricing below. β€οΈ
-Here is all the information you need if you want to commission me to make a mod for you:
-Hi, I'm Ellpeck, a student and programmer from Germany. I've been making Minecraft mods for over 6 years, and during that time, I created some popular mods like Actually Additions and Nature's Aura. If you want to know more about my projects, you should check out my website.
+Recently, I started accepting commissions for mods as well. If you want a Minecraft mod of any size and complexity made, I can do that for you. You can check out the terms and pricing below. β€οΈ
+Here is all the information you need if you want to commission me to make a mod for you:
+Dieses Impressum gilt fΓΌr alle Subdomains von ellpeck.de sowie die Seiten ell.lt und tinylifegame.com und deren Subdomains.
- -
- Julian Schubert
-
Meininger Allee 9
-
89231 Neu-Ulm
-
- Telefon: 0731 37881764
-
E-Mail: games@ellpeck.de
-
USt-Id: DE327030758
-
Dieses Impressum gilt fΓΌr alle Subdomains von ellpeck.de sowie die Seiten ell.lt und tinylifegame.com und deren Subdomains.
+ +
+ Julian Schubert
+
Meininger Allee 9
+
89231 Neu-Ulm
+
+ Telefon: 0731 37881764
+
E-Mail: games@ellpeck.de
+
USt-Id: DE327030758
+
Welcome to my personal website! I'm Ellpeck, though I usually go by Ell. I'm a developer person from Germany, and I do a lot of stuff online!
-Welcome to my personal website! I'm Ellpeck, though I usually go by Ell. I'm a developer person from Germany, and I do a lot of stuff online!
+This privacy policy applies to all subdomains of ellpeck.de as well as the sites ell.lt and tinylifegame.com and their subdomains.
- -This site uses cookies and local storage to store information about your browsing activity. This information is only stored locally on your device, and not evaluated or analyzed by the web server.
- -Due to widgets, embeds and analytics, additional information will be stored by other sites. Please refer to those sites' privacy policies for more information:
-This privacy policy applies to all subdomains of ellpeck.de as well as the sites ell.lt and tinylifegame.com and their subdomains.
+ +This site uses cookies and local storage to store information about your browsing activity. This information is only stored locally on your device, and not evaluated or analyzed by the web server.
+ +Due to widgets, embeds and analytics, additional information will be stored by other sites. Please refer to those sites' privacy policies for more information:
+