move blog resources to blog directory
All checks were successful
Web/pipeline/head This commit looks good
4
.gitignore
vendored
|
@ -3,4 +3,6 @@ sitemap.xml
|
||||||
feed.json
|
feed.json
|
||||||
rss.xml
|
rss.xml
|
||||||
atom.xml
|
atom.xml
|
||||||
/blog
|
/blog/*
|
||||||
|
!/blog/.htaccess
|
||||||
|
!/blog/res
|
|
@ -22,9 +22,3 @@ RewriteRule ^wishlist/?$ "https://www.amazon.de/hz/wishlist/ls/LZO9Y2Z3VJ5Q?&sor
|
||||||
RewriteRule ^fftranslate/?$ "https://poeditor.com/join/project/ElzC23ecB6" [R=301,L]
|
RewriteRule ^fftranslate/?$ "https://poeditor.com/join/project/ElzC23ecB6" [R=301,L]
|
||||||
|
|
||||||
ErrorDocument 404 /404.html
|
ErrorDocument 404 /404.html
|
||||||
|
|
||||||
<FilesMatch "^(blog|sitemap|feed|atom|rss)">
|
|
||||||
ExpiresActive On
|
|
||||||
ExpiresDefault A1
|
|
||||||
Header append Cache-Control must-revalidate
|
|
||||||
</FilesMatch>
|
|
||||||
|
|
3
blog/.htaccess
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
ExpiresActive On
|
||||||
|
ExpiresDefault A1
|
||||||
|
Header append Cache-Control must-revalidate
|
Before Width: | Height: | Size: 632 KiB After Width: | Height: | Size: 632 KiB |
Before Width: | Height: | Size: 380 KiB After Width: | Height: | Size: 380 KiB |
Before Width: | Height: | Size: 630 KiB After Width: | Height: | Size: 630 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 4.3 MiB After Width: | Height: | Size: 4.3 MiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
@ -18,11 +18,11 @@ MiKeY and Rid are going to port Actually Additions to **Forge** for **Minecraft
|
||||||
|
|
||||||
The art overhaul has already started (and even been finished, I believe), and because it is *gorgeous*, I'm going to show you some of the preview pictures that Rid has sent me right now. Enjoy.
|
The art overhaul has already started (and even been finished, I believe), and because it is *gorgeous*, I'm going to show you some of the preview pictures that Rid has sent me right now. Enjoy.
|
||||||
|
|
||||||
![](../blogsrc/res/future_actually_additions/1.png =100%x*)
|
![](res/future_actually_additions/1.png =100%x*)
|
||||||
|
|
||||||
![](../blogsrc/res/future_actually_additions/2.png =100%x*)
|
![](res/future_actually_additions/2.png =100%x*)
|
||||||
|
|
||||||
![](../blogsrc/res/future_actually_additions/3.png =100%x*)
|
![](res/future_actually_additions/3.png =100%x*)
|
||||||
|
|
||||||
Don't they look *so good*?
|
Don't they look *so good*?
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Okay, finding [a build of the game](https://github.com/RockBottomGame/RockBottom
|
||||||
|
|
||||||
Hm. Okay.
|
Hm. Okay.
|
||||||
So something's already broken.
|
So something's already broken.
|
||||||
![](../blogsrc/res/rock_bottom_mod/1.png =100%x*)
|
![](res/rock_bottom_mod/1.png =100%x*)
|
||||||
|
|
||||||
It looks like here
|
It looks like here
|
||||||
```
|
```
|
||||||
|
@ -27,7 +27,7 @@ That didn't seem to fix it either. Huh. Taking a look at [the maven](https://mav
|
||||||
|
|
||||||
Okay, it's now the next day and it looks like the maven has been fixed, which is nice. So all the compile issues are finally resolved, I put the build into the `/gamedata` folder like explained in the tutorial, I renamed the examplemod to `NaturesAura`, and I can now finally try running the game!
|
Okay, it's now the next day and it looks like the maven has been fixed, which is nice. So all the compile issues are finally resolved, I put the build into the `/gamedata` folder like explained in the tutorial, I renamed the examplemod to `NaturesAura`, and I can now finally try running the game!
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/2.png =100%x*)
|
![](res/rock_bottom_mod/2.png =100%x*)
|
||||||
Ah! That worked quite well in the end.
|
Ah! That worked quite well in the end.
|
||||||
|
|
||||||
# Actually making something
|
# Actually making something
|
||||||
|
@ -76,7 +76,7 @@ public void preInit(IGameInstance game, IApiHandler apiHandler, IEventHandler ev
|
||||||
So far, so good. Let's figure out how to add a texture to the thing.
|
So far, so good. Let's figure out how to add a texture to the thing.
|
||||||
I somewhat remember that I made a horrible json-based asset system (instead of just loading all of the assets in the mod's jar automatically), so I'm going to try to add my tile to the `assets.json` file the example mod provided me with and also add a texture into the actual file system.
|
I somewhat remember that I made a horrible json-based asset system (instead of just loading all of the assets in the mod's jar automatically), so I'm going to try to add my tile to the `assets.json` file the example mod provided me with and also add a texture into the actual file system.
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/3.png =100%x*)
|
![](res/rock_bottom_mod/3.png =100%x*)
|
||||||
This is the folder structure I decided on. I also created a quick golden version of the game's leaves texture by going to the [asset repository](https://github.com/RockBottomGame/Assets), stealing the leaves texture and recoloring it to be golden-ish.
|
This is the folder structure I decided on. I also created a quick golden version of the game's leaves texture by going to the [asset repository](https://github.com/RockBottomGame/Assets), stealing the leaves texture and recoloring it to be golden-ish.
|
||||||
|
|
||||||
Also, I put this in the assets file, but I have no idea if that's actually the right path. We'll find out.
|
Also, I put this in the assets file, but I have no idea if that's actually the right path. We'll find out.
|
||||||
|
@ -101,7 +101,7 @@ public static final Tile GOLDEN_LEAVES = new TileGoldenLeaves(NaturesAura.create
|
||||||
```
|
```
|
||||||
*Crisis averted*.
|
*Crisis averted*.
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/4.png =100%x*)
|
![](res/rock_bottom_mod/4.png =100%x*)
|
||||||
Yaaay, it... worked? *Somewhat?*
|
Yaaay, it... worked? *Somewhat?*
|
||||||
|
|
||||||
You're probably yelling at your screen by now, but yes, I finally noticed it as well: My assets path says `examplemod` instead of `naturesaura`. Easy fix, though.
|
You're probably yelling at your screen by now, but yes, I finally noticed it as well: My assets path says `examplemod` instead of `naturesaura`. Easy fix, though.
|
||||||
|
@ -119,7 +119,7 @@ While I'm at it though, I can also add a localization entry for the golden leave
|
||||||
|
|
||||||
Let's try again.
|
Let's try again.
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/5.png =100%x*)
|
![](res/rock_bottom_mod/5.png =100%x*)
|
||||||
Ta-da! Success, at last.
|
Ta-da! Success, at last.
|
||||||
|
|
||||||
After some investigation, I realized that Rock Bottom's normal leaves can be walked through, so let's see how to make that happen. Typing `@Override` while in the `TileGoldenLeaves` class causes my IDE to list all of the methods I can override. Among them are two that interest me:
|
After some investigation, I realized that Rock Bottom's normal leaves can be walked through, so let's see how to make that happen. Typing `@Override` while in the `TileGoldenLeaves` class causes my IDE to list all of the methods I can override. Among them are two that interest me:
|
||||||
|
@ -136,13 +136,13 @@ public BoundBox getBoundBox(IWorld world, TileState state, int x, int y, TileLay
|
||||||
```
|
```
|
||||||
It seems like this is what I have to do to make the tile walk-through...able. Let's try it out.
|
It seems like this is what I have to do to make the tile walk-through...able. Let's try it out.
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/6.png =100%x*)
|
![](res/rock_bottom_mod/6.png =100%x*)
|
||||||
Yay, that seems to have worked. Great.
|
Yay, that seems to have worked. Great.
|
||||||
|
|
||||||
# Making an item
|
# Making an item
|
||||||
Now that I have somewhat of a grip of this whole Rock Bottom stuff again, I'm quickly going to make an item. I won't bore you with the details as it's pretty similar to making a tile, but the gist of it is this: I made an `ItemGoldPowder` class that extends `ItemBasic`, and I initialized and registered an instance of that in my newly created `Items` class, of which I created an instance in my mod class's `preInit` method so that it gets initialized at the right time. Also, I did all of the annoying asset mumbo jumbo.
|
Now that I have somewhat of a grip of this whole Rock Bottom stuff again, I'm quickly going to make an item. I won't bore you with the details as it's pretty similar to making a tile, but the gist of it is this: I made an `ItemGoldPowder` class that extends `ItemBasic`, and I initialized and registered an instance of that in my newly created `Items` class, of which I created an instance in my mod class's `preInit` method so that it gets initialized at the right time. Also, I did all of the annoying asset mumbo jumbo.
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/7.png =100%x*)
|
![](res/rock_bottom_mod/7.png =100%x*)
|
||||||
*Oh, C#, you've ruined me.*
|
*Oh, C#, you've ruined me.*
|
||||||
|
|
||||||
# Making stuff happen
|
# Making stuff happen
|
||||||
|
@ -164,7 +164,7 @@ While writing this code, I quickly remembered that Rock Bottom has a tile state
|
||||||
|
|
||||||
Let's try it out! ...yea, no. The Java version that gradle uses to compile a Rock Bottom mod isn't new enough yet: You can't use the `var` keyword. Oh, my poor, poor C# soul. So let's swap that `var` out for a `TileState`.
|
Let's try it out! ...yea, no. The Java version that gradle uses to compile a Rock Bottom mod isn't new enough yet: You can't use the `var` keyword. Oh, my poor, poor C# soul. So let's swap that `var` out for a `TileState`.
|
||||||
|
|
||||||
![](../blogsrc/res/rock_bottom_mod/8.gif =100%x*)
|
![](res/rock_bottom_mod/8.gif =100%x*)
|
||||||
Yay, it works! *Except that, in the gif, the mouse position is weirdly offset for some reason. It's correct in person, I promise!*
|
Yay, it works! *Except that, in the gif, the mouse position is weirdly offset for some reason. It's correct in person, I promise!*
|
||||||
|
|
||||||
# Conclusion
|
# Conclusion
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
As it turns out, I struggle a lot with maintaining interest and motivation for working on bigger projects like my [other game](https://rockbottom.ellpeck.de/) or my Minecraft mods. However, an easy fix for that would be to just start less big projects and focus more on smaller ones, like **Foe Frenzy**. Foe Frenzy is a game I've been working on for about a month now.
|
As it turns out, I struggle a lot with maintaining interest and motivation for working on bigger projects like my [other game](https://rockbottom.ellpeck.de/) or my Minecraft mods. However, an easy fix for that would be to just start less big projects and focus more on smaller ones, like **Foe Frenzy**. Foe Frenzy is a game I've been working on for about a month now.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/contrib.png =100%x*)
|
![](res/small_projects/contrib.png =100%x*)
|
||||||
|
|
||||||
The basic gameplay is finished, as is enough content for my friends to have been testing it for the last week or so and saying that they enjoy it quite a bit, both visually and gameplay-wise. I thought I'd make a blog post about my process of working on it, showing what it's about and what I did this time around to make sure that I don't get burnt out with it.
|
The basic gameplay is finished, as is enough content for my friends to have been testing it for the last week or so and saying that they enjoy it quite a bit, both visually and gameplay-wise. I thought I'd make a blog post about my process of working on it, showing what it's about and what I did this time around to make sure that I don't get burnt out with it.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/overview.png =100%x*)
|
![](res/small_projects/overview.png =100%x*)
|
||||||
|
|
||||||
_Foe Frenzy is a fast-paced fighting game where you battle up to three of your friends with random, short-lasting items in an attempt to be the last survivor._
|
_Foe Frenzy is a fast-paced fighting game where you battle up to three of your friends with random, short-lasting items in an attempt to be the last survivor._
|
||||||
|
|
||||||
|
@ -14,9 +14,9 @@ A lot of times, I'll find myself getting stuck on making art for my game project
|
||||||
|
|
||||||
So, this time around, what I did instead of doing that all over again, I just decided to go with _simple art_ instead. For example, as you can see, all the tiles in the world only have 8x8 pixels, and all of them follow a really simple pattern: The top and left side are slightly darker, giving the world a really tiled feel and making the levels seem like they were made with actual building bricks. As well as that, the character movement animations are _really_ simple.
|
So, this time around, what I did instead of doing that all over again, I just decided to go with _simple art_ instead. For example, as you can see, all the tiles in the world only have 8x8 pixels, and all of them follow a really simple pattern: The top and left side are slightly darker, giving the world a really tiled feel and making the levels seem like they were made with actual building bricks. As well as that, the character movement animations are _really_ simple.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/wobble.gif =100%x*)
|
![](res/small_projects/wobble.gif =100%x*)
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/water_wobble.gif =100%x*)
|
![](res/small_projects/water_wobble.gif =100%x*)
|
||||||
|
|
||||||
Both of those aren't even real animations per se, because what they really are is just the player's static texture rotating around a sin wave that is centered on the player's feet. It looks cute, though.
|
Both of those aren't even real animations per se, because what they really are is just the player's static texture rotating around a sin wave that is centered on the player's feet. It looks cute, though.
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ What I did for this game instead is just kind of... let the code take me where i
|
||||||
|
|
||||||
For example, the map parsing system is really simple: It consists of an XML file, which stores all the important information about a map like its name and the positions that players spawn in, and a png file.
|
For example, the map parsing system is really simple: It consists of an XML file, which stores all the important information about a map like its name and the positions that players spawn in, and a png file.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/map.png =100%x*)
|
![](res/small_projects/map.png =100%x*)
|
||||||
|
|
||||||
Each pixel in the file determines which tile will be put at its location. In this instance, black is deep water, blue is shallow water, yellow is sand and green is grass. And the cool thing is that this is really easy to deal with (reading pixels is a simple thing that's present in almost every game framework), because changing something on the map just takes an image editing program, no custom map editor needed.
|
Each pixel in the file determines which tile will be put at its location. In this instance, black is deep water, blue is shallow water, yellow is sand and green is grass. And the cool thing is that this is really easy to deal with (reading pixels is a simple thing that's present in almost every game framework), because changing something on the map just takes an image editing program, no custom map editor needed.
|
||||||
|
|
||||||
|
@ -49,14 +49,14 @@ Keep updated about the game on [my Discord](https://ellpeck.de/discord) as well
|
||||||
|
|
||||||
To finish off, here are some more pictures of the game for your enjoyment.
|
To finish off, here are some more pictures of the game for your enjoyment.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/cave.png =100%x*)
|
![](res/small_projects/cave.png =100%x*)
|
||||||
A cave being lit up by torches and lava. This is where a rubber hammer can spawn that you can use to knock the other players into the lava.
|
A cave being lit up by torches and lava. This is where a rubber hammer can spawn that you can use to knock the other players into the lava.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/map_select.png =100%x*)
|
![](res/small_projects/map_select.png =100%x*)
|
||||||
The map selection screen, where each player can choose the map that they'd like to play most.
|
The map selection screen, where each player can choose the map that they'd like to play most.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/flame_thrower.gif =100%x*)
|
![](res/small_projects/flame_thrower.gif =100%x*)
|
||||||
The favorite item I've added so far: The flamethrower.
|
The favorite item I've added so far: The flamethrower.
|
||||||
|
|
||||||
![](../blogsrc/res/small_projects/win.gif =100%x*)
|
![](res/small_projects/win.gif =100%x*)
|
||||||
Killing the last person alive and winning
|
Killing the last person alive and winning
|