small projects

This commit is contained in:
Ellpeck 2019-05-01 20:10:56 +02:00
parent dc2dee211a
commit 16f5a7a565
14 changed files with 80 additions and 10 deletions

View File

@ -15,5 +15,10 @@
"id": "reading",
"date": "3/22/2019",
"discuss": "https://twitter.com/Ellpeck/status/1109102077911973888"
},
{
"name": "Small Projects",
"id": "small_projects",
"date": "5/1/2019"
}
]

View File

@ -1,6 +1,6 @@
Recently, my boyfriend gave me his old Amazon Kindle (because he got one of the newer models). This inspired me, after about four or five years of not really picking up a book outside of school, to start reading for fun again. The first book that I "picked up" was Harry Potter and the.. stone.. of the wise ("Harry Potter and the Philosopher's Stone" apparently).
### The book
# The book
I've never written a book review before, but since Harry Potter is kind of a really popular genre and this is the first time I read one of the books, I wanted to give my opinion on it.
Now usually, I don't really enjoy the fantasy genre. Something about it is just a bit uninteresting to me, and I don't necessarily enjoy reading something that's unrelated to (my) reality. I usually need entertainment to be somewhat relatable to me and my life, and fantasy and science fiction don't always do that for me; I don't really enjoy things like Star Wars, but I do enjoy, for example, the Netflix show Black Mirror, because it touches topics that I do come in contact with in my own life.
@ -13,7 +13,7 @@ I would definitely say that I enjoyed the book (which is saying quite a lot, bec
_Also, regarding the stuff that's happening with whatever J.K. is saying right now: If she or anyone else thinks it's okay to retroactively pretend like there's diversity where there simply isn't any: In my opinion, it's not okay. Just accept that your writing in that regard just isn't up to the standard of what it should be in the 21st century. Characters shouldn't be gay, black or another minority for the sake of "showing diversity" or "making a statement", but because diversity like that just happens to exist in the real world._
### The Kindle
# The Kindle
There's honestly not much to say about the Kindle, because everything that I could say can be easily summed up into this: _I absolutely love it_. It's one of the older generation Paperwhites (maybe even the first one, I'm not sure), and the e-ink is amazing, the menus are easy to navigate, being able to change the font is great. It's just all round an awesome experience, especially because, with Amazon Prime, which pretty much everyone seems to have, you have Prime Reading, which allows you to read quite a big amount of books for free (without even having to get Kindle Unlimited).
Seriously, if you enjoy reading, but don't enjoy carrying heavy books around with you while you're traveling, I really think you should get a Kindle.

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

62
blog/small_projects.md Normal file
View File

@ -0,0 +1,62 @@
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.
![](blog/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.
![](blog/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._
# The Artstyle
Not every developer has this problem, but I know a lot do: The inability to make good-looking art. Well, I have this same problem too.
A lot of times, I'll find myself getting stuck on making art for my game projects and getting burnt out through trying too hard to force myself to make good-looking art.
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.
![](blog/res/small_projects/wobble.gif =100%x*)
![](blog/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.
# The Inner Workings
Whenever I write code, I tend to try to overoptimize it a lot. What I mean by that is that I think about systems that I want to implement too intricately sometimes. For instance, if I want to make a tile-based game, I obviously set up some data structures around tiles and how they're going to be ordered and stored on the map. But then, I'll also go and write a bunch of utility methods, conversion functions, figure out a really in-depth coordinate system for dynamic objects, and so on. And, honestly, for projects that aren't too big, all of that isn't really necessary.
What I did for this game instead is just kind of... let the code take me where it wants to. That may sound a bit ridiculous and performance-intensive, but it honestly works pretty well if you know what you're doing with the framework you're using. A lot of the code in this game is put together somewhat hackily. A lot of hard references to certain items and tile types (like how bombs can only turn grass into dirt and nothing else), a lot of messy utility functions all bunched together into a single class, very little documentation and abstract methods, hub interfaces for things that do similar things, and so on. But that's fine, because this isn't a huge project and I don't plan on adding complicated systems like a modding API or anything like that, so it'd be unnecessary to waste my time on doing something overly fancy.
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.
![](blog/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.
# The Gameplay
For some of the other games I've worked on, I've always had huge plans to start with. I had this one plan to make a big Animal Crossing-style game with real time progression, tons of NPCs, a lot of complicated gameplay mechanics. I'd worked on a game for over two years that was an open world sandbox, and it was supposed to have a huge story with optional, skippable elements, and... honestly, it's hard to actually make all that happen, at least for me. At some point, I just start looking at it from a different perspective and thinking to myself "Why did I take on such a huge project? This is impossible." and that makes me lose motivation.
So for Foe Frenzy, I went with a really simple concept that consists of a small amount of clearly definable main points:
- Up to four players on a local computer, controlled by keyboard and gamepads
- Predefined maps that the players can choose
- Item spawners that spawn random items to battle or protect yourself with, where each of the items only lasts for a short time, so you have to keep going back and getting new ones
- Kill all the other players to win
Because I had this clear plan in mind before starting the game, and because it's really not that much to do (I've been working on the game for a month, and all that's left to do is add more maps and more items to battle with), it's been easy to stay on track and stay focused rather than burning out because of responsibility overload.
# So yea...
that's what I've been doing for the last month, and that's why [my other projects](https://minecraft.curseforge.com/projects/natures-aura) have been suffering a little bit. But it's been really fun, and I might even have something to actually release as a real, finished game some time in the near-ish future. It's also been making me feel accomplished, because I've already been able to have my friends test the game out, and they say it's been fun which means that I already accomplished a big part of what I wanted to accomplish with this game.
Keep updated about the game on [my Discord](https://ellpeck.de/discord) as well as [my Twitter](https://twitter.com/Ellpeck), and I hope you enjoyed reading about the game and my development process so far.
To finish off, here are some more pictures of the game for your enjoyment.
![](blog/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.
![](blog/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.
![](blog/res/small_projects/flame_thrower.gif =100%x*)
The favorite item I've added so far: The flamethrower.
![](blog/res/small_projects/win.gif =100%x*)
Killing the last person alive and winning

View File

@ -1,28 +1,28 @@
So... for the last couple of years, the main thing I've been doing in my free time is game development and modding Minecraft, but the latter far more often and more consistently. I've learned a lot while doing this, but not only when it comes to programming and game development, but also when it comes to a lot of other things.
So in this post, I want to introduce you to what's so great about Minecraft modding and, honestly, why you should try doing it as well.
### Programming Experience
# Programming Experience
Now, first and foremost, and I think this is definitely one of the most obvious point: It improves your programming experience by quite a bit. Both in the "understanding the language" department, but also, it helps you to do a couple of things that you'll need if you want to deal with anything that other people have made:
- Understanding someone else's codebase and learning to navigate code that someone else has made, both documented and undocumented
- The beauty of learning how annoying it is to see code that's made in a way that makes it *so unbelievably hard* to expand it, to build on it, and learning that, when making your own code, you most definitely shouldn't do it like that.
- Learning to make something fit well with something other people have made. I'm sure this is also a useful skill to have in a job that includes team efforts: The same way a paper should have a unified style, it's also not very nice to have high resolution textures in a mod for a game that has a very primitive artstyle.
### Easily Creating Things
# Easily Creating Things
When creating your own game, I've personally found that it's pretty hard to get it off the ground at the start, because all you can see for the first couple of days are missing textures, placeholders, a missing main menu, janky controls and so on. When you're making a mod for any game, but especially for Minecraft, you can create a single, small feature and then instantly start using it together with all of the other features that the game already provides for you.
It's so much easier to get excited and satisfied about something you've made when it doesn't take ages for it to actually look good in its intended environment - making a mod for a game is perfect for that.
### Meeting Amazing People
# Meeting Amazing People
This is something that definitely comes a bit later down the line, at least it did for me, but it's also something that's been really, really important to me. Through modding Minecraft, and especially by making [Actually Additions](https://minecraft.curseforge.com/projects/actually-additions), I've met so many amazing people and made a huge amount of new friends.
And not only that, I've also met a lot of people that I really look(ed) up to and respect(ed), and then noticed how down to earth and nice they actually are (because after all, they're also just people): Direwolf20, Vazkii and so many other people became my friends because it's easy to get along well with someone that shares the same interests as you, especially when it's an interest as passionate as the Minecraft Modding community.
### Being Validated by Thousands
# Being Validated by Thousands
This is one of the most important bits for me, honestly. I have pretty low self esteem (as a lot of introverted people on the internet do, I imagine), and it's hard for me to be proud of something that I've created.
But through the mods I've made, especially Actually Additions and recently also [Nature's Aura](https://minecraft.curseforge.com/projects/natures-aura), I've been shown by so many people, both friends and complete strangers, that the stuff I make seems to be worth quite a lot to quite a lot of people, and that they're passionate about my work, some maybe even more passionate than I am about it myself.
It feels so good to make something and to see people downloading it, people playing with it, people making videos about it and saying how nice they think it is. Trying to be validated isn't "seeking attention", it's good for you, because it makes you feel like you're worth a lot. Because you are.
### Learning to Deal With Criticism
# Learning to Deal With Criticism
Also a big thing for me for sure. Because of my previously mentioned low self esteem, it's been pretty hard for me to accept and deal with people saying that they dislike something that I've created.
But in the Minecraft modding community, oh boy, it's a *huge* thing. The first thing you'll get to hear about any new mod you publish is how it's "*totally a ripoff of Thaumcraft and Botania*" and "*this is just Extra Utilities, but worse*", and so on, and so forth. And.. at first, it can be quite demotivating, to say the least, because it sucks that people compare your thing to someone else's thing, despite the fact that you put at least an equal amount of work in it, and despite the fact that it deserves the same amount of respect as that other thing.
@ -32,13 +32,13 @@ And it's not all bad either, in fact, the opposite is true: There are a *lot* of
So keep on going, no matter what people say, because you're probably awesome.
### Basically No Obligations
# Basically No Obligations
When making a game, or a "real" product in general, a lot of the time, you're bound to certain obligations: Either it's legal ones, or maybe you've done a Kickstarter, maybe the thing you make actually costs you quite a bit of money because you have a whole development team, stuff like that.
Well with Minecraft modding, the only thing you have to deal with is people asking you when you'll *finally* update to the next version. But if you're sick of that, or sick of anything else, you can just stop, take a break, and do something else entirely for a while.
People might judge, but the important thing is: They don't have a right to judge, because you can do whatever you want. It's a hobby thing, so it's your thing.
### So yea,
# So yea,
this is all of the stuff I could think of that inspires me to keep going with Minecraft Modding. It's been a really awesome journey so far and I'm excited to keep going, to create more things and to see more things that other people created.
Thanks for reading! <3

View File

@ -1,4 +1,7 @@
let converter = new showdown.Converter();
let converter = new showdown.Converter({
parseImgDimensions: "true",
headerLevelStart: 3
});
$.ajax({
dataType: "json",
url: "blog/posts.json",