Posts tagged Ne+
Where to begin?
According to WordPress, 323 days ago I posted a development video of what I was calling Ne+. That whole idea/game perished shortly after. There were many reasons why I never saw it through to completion, but at the end of the day I gave up and it was my fault.
One of the reasons was that I started working for Intel. Even now I can’t say what it is I’ve actually been doing professionally for the last year, except to say it’s certainly the best work I’ve ever produced and it’s been a very exciting and interesting ride for me. Hopefully I’ll be able to link to some images and videos soon.
A few weeks ago I was looking over the code I had written for my senior project. There was a lot of good stuff in there, although a lot of it needed to be cleaned up. Getting lighting, shaders, 3D audio, a tile engine, and other components all working was no small task. And a lot of it can be used to a greater purpose, I hope. So with that in mind, I’ve started working on a new project. Mistake number one is that it’s already far more ambitious than my first project, and we know what happened to that one. I won’t claim it’s going to be great, I won’t even give it a name, but I am going to keep putting time into it here and there.
The first big thing that I did was implement a different tile engine, so that now the senior project code I wrote is being used to create an old-school top-down tile movement system. You can draw boundary tiles in Tiled and be able to run into them with your character, and just yesterday evening I created an NPC class that you can also run into, although the way I implemented the collision checking for those was a little hackish. Movement speed is isolated in a configuration file as it should be. I also have a space skybox with a nice 3D camera to play with, currently used as the background of my main menu. I think I should be able to get a lot of mileage out of it for many different pieces of the game.
So, I really won’t say too much more now, as I just want to have something to show at this point. But there are still things in the works, and right now I am more productive than I’ve ever been.
So my work with Processing turned out to be immediately helpful in my XNA work; one of the things I did with Processing was create a sort of player that had a few different states with corresponding animations, so I basically ported that idea over to my Ne+ player. Now I have walking under its corresponding animation, and sprites for standing, jumping, falling, and crouching. I think that crouching is turning out to be pointless right now, although only because I’m not moving the physics object in such a way that it would dodge anything. I’m not going to worry about it at the moment, it can be a purely visual thing for now. The next thing I did was create a simple sprite for bullets, and start attaching lights to them as well. I hit a snag that I thought might be a Krypton issue for just a moment, but really what the problem is is that I am currently letting the player hold fire and shooting a bunch of bullets; the lights overlapping made them look like big red circles rather than a lit area, and I spent a couple moments tweaking Krypton values before realizing I just needed to add some limitation to the firing.
I’ve successfully finished my first Processing experiment. I’ll be sure to link to it when it goes live, but for now, I’m not exactly sure how I feel about it. I do think that it’s a worthwhile venture, but it’s kind of a solution waiting for a problem sort of thing. There is potential; I just have to come up with some ideas on how to utilize it. Now that I’ve finished it though, it’s time to get back to Ne+.
The new project I’ve started in Processing is going extremely well. I did have a bit of a rough time last night; I stayed up until 3AM figuring out how to make a project that would work in both Eclipse and the Processing editor, as well as provide me with a workable workflow. I still haven’t really figured it out; basically I need to keep the library I’m developing for it updated in two places. I’m sure I could write an Ant script to do this for me, but ugh… and the Processing plugin is okay, but for some reason I’ve lost out on autocompletion in the sketch files. I don’t know, there’s a couple issues I still have, but I definitely know what needs to happen to make everything work in the meantime. I should mention that I made a big step as far as deployment goes too; it’s another process I’m not entirely happy with, but after I follow it I am basically able to deploy whatever I’ve done to a blog post. I should also mention that it didn’t work on Internet Explorer… I’m sure there’s a solution for that, but… I’m just not going to deal with it right now.
Isn’t that interesting? Now I can develop things and then put them on my website! Of course we all knew this was possible, but I had just avoided diving into Java and Processing until now. I even ported over the component system that I’m using in Ne+ and have a sprite library that should handle animations for me, although I haven’t made an animation to test with, and I also polished the dialog box I made so that it works pretty well. I still need to figure out how I’m going to make the little triangles that come out of it and point at who’s talking… What could I be up to, I wonder?
The player class is in the middle of some upgrades. I just changed him from a boring old square to a unicycle. Unicycle? Well, yeah. It’s not like the physics object behind the player actually has to look like the artwork going over it! So now, he’s a square connected with some joints to a circle. The circle provides really smooth traversal of the game landscape, and the square/rectangle just adds some form to the thing. I am going to move forward with the player class and eliminate the floating with some jumping limitations.
I think that what I want to accomplish with the jumping in Ne+ is a simple system where the amount of time the jump button is held defines how high the jump is, and of course once the player lets go it should be impossible to jump again until you’re on the ground. I’ll be working on fine-tuning this moving forward.
I’ve been integrating a lot of different little technologies to help me with the development of Ne+. One of the things I quickly realized is that my main source code repository is precious, something that I need to protect and keep clean while I’m creating a new feature or adding in some existing code. There are many ways that one can do this. Sometimes, you want to drastically alter your code and refactor many of your core classes or functionality to be more organized, or create a more streamlined design. It’s entirely possible to accomplish this without destroying your project. If you aren’t using source control, you’ve got bigger problems on your hands and should take care of that immediately. However, if you are using source control, it becomes infinitely easier to manage changes like these effectively.
I’m using Git for my project. With Git, the technique for developing a little something on the side, as opposed to in your main branch, is to just create another branch. It’s a simple concept – you’re creating another branch in your development road, one that could eventually come back to the main road, or lead nowhere. If it leads nowhere, you can delete it… otherwise, you merge those changes back into the main project and continue on. There are a few source control methods that contain this concept, but if you happen to be using something that doesn’t, make a copy of your project and do it yourself! The point is that you need to be able to experiment.
Another way to introduce a new concept into your project is to prove it outside of your project first, so that you’ve got some code you can use, as well as a general idea of how you might want to integrate it with your existing code. Create a new project and do the absolute bare minimum you need to in order to see the new concept working – this allows you a sandbox environment where you can do whatever you want. I have found it easiest for me to do this, particularly when I was trying to get the lighting involved with my project – it was easier to make it work on its own before getting it to play nicely with the camera and physics that were already in place.
If you have a nice environment for testing new concepts, I find that it’s much easier to keep from making your main project a mess. I also like tagging my code in source control at major landmarks. If the lighting is working for the first time, tag your project. If you got the bugs ironed out, tag it again. Leave some breadcrumbs, because you can’t be sure when you might have the need to retrace your steps later.
Ne+ is the name of the project I will be working on for the next year or so. The name is in reference to the element Neon, because the visual style of the game will be very similar to Geometry Wars in terms of colors and lighting. I first thought of the idea when considering what an ideal first video game would be for me to work on, as I have little experience thus far in my career. I had a more grand idea before this one, but it was too grand and complex for me to start with. The main idea behind this game is simpler, but I think it still provides an interesting and stimulating gameplay dynamic that is full of possibilities, while still remaining a meaningful endeavor.
The Core Concept
The reason that I have chosen to pursue the GW-style visuals is because of Ne+’s focus on lighting. The game is to be purely sidescrolling 2D, but lighting will play a central role because the primary game objects are all lights. I find it easiest to illustrate the gameplay with a simple example. Imagine a spotlight that projects a “light platform.” This light platform is just like any other surface in the game world. Now, imagine another light that nulls all light effects in the game, and when pointed at the light platform, the platform disappears. Some of these lights will be manipulated by the player, while others will be stationary objects in game scenes. It’s easy to see how this idea could expand, with other potential light effects:
- Friction Modifier
- Gravity Modifier
- Harmful to Player
- Light Distance Amplifier
- Light Effect Amplifier
- Velocity Modifier (Would a time modifier make sense, or is it taken care of here?)
The idea behind these is that they all combine at runtime to create a very dynamic experience. Each light will be assigned a color, and so as colors combine, so too will their effects. To top this dynamic concept off, different types of lights will be present (basically spotlights or area lights), with different properties (that can be manipulated with respect to time to create flashing and pulsing effects), as well as a relation to the audio that provides a unique audio-visual experience:
- Audio Connection
- Player Manipulatable
At the moment, I think that the best way to explore these gameplay concepts initially is to have the player progress through scenes, utilizing them to advance. By navigating situations that can only be completed through proper application of the concepts, the player should be able to participate in a solid puzzle experience with a platforming element. This is the essence of Ne+.