Lexicon – Final Download link

Download link to the final version. In order to run it, do the following in command prompt/Mac OS X’s equivalent:

cd (game directory)
java -jar Lexicon.jar 0 “username” false

You can change the false to true if you want to record your gameplay (Locks framerate at 30FPS.)

Big(ish) announcement. I was browsing the code for this game, trying to find a way to enhance, and make it more efficient. Nothing was really right. All of the code is very messy, basic, and inefficient. At this point it’s more or less impossible to add new features, and when I do it only adds to the chaos.

So… being as this was my first project it was bound to come to this. I’m ending development on this strand of Lexicon. Not at all stopping development on the game entirely. This game is a huge part of my life because it’s been an idea I’ve had for a long, long time. I couldn’t have gotten this far withoutthis engine, the helpful people, and most of all this community.

BUT- I’m not just going to give up and make some new game. I’m going back to square one. I’ll be starting a re-write of Lexicon with the knowledge I have now, after nearly a year of work on this project. I’ll be re-writing with major emphasis on clean code, modular API, and multiplayer.

If anyone wants the final version of Lexicon as it is right now, PM me and I’ll figure out a way to get it to you (It’s like 40MB and my email only lets me send up to 25 so we’d have to figure something out). Keep in mind it’s very, very buggy, and painfully unfinished.


Watch in 720p if you want to see what’s being typed in the bar thingy.

That’s a video of the latest version of the game so far, in a map that just tests the features. After a few bug fixes, I’ll be releasing v0.6 for download, along with a new map. I realize the video looks like it’s in fast motion but that’s because the computer I recorded on isn’t very good and was quite laggy. Features:

Buildings, with the ability to be destroyed.
Weapons, which are customizable and swappable.
Basic AI (currently being re-written, which is why it wasn’t in the video)
Vehicles, which are also being rewritten.
A basic HUD, which will be added to soon.
Multiplayer (isn’t quite functional yet)

Those are some of the more prominent features. I’ve been working on this project since about May. It’s basically all I do anymore, is work on this. Lately I’ve been more busy working on the first fully functional map, and getting multiplayer to work. Planned features for v0.7:

Mostly just performance boosting, finding spots that are CPU intensive and trying to optimize them.
Campaign-like features (saving progress, triggering events on certain actions)
HOPEFULLY animation. I’d really love to add it soon.
Sound, if at all possible.

So, if you have any suggestions, comments, or criticism let me know! Thanks!

==========

Some changes in the last day:
Changed the FOV change on sprint from being very abrupt to smooth transitions, same with sighting
Decreased blur on sprinting
Made weapons interpolate towards sighting position instead of instantly appearing there
Started on and got lots of progress with re-writing vehicles.
Added kick when firing weapons
Made crouching smoother

I’m uploading the video for this update now. Slow internet = it’ll be a while but I hope it’s satisfying! :smiley:

Edit:

This one was recorded all on the lowest, except with no fractured parts filtered out just to show how that looks.

==============

I got some work on vehicles done today, and I came to a decision. The VehicleControl that comes with jBullet is ridiculously complicated and I absolutely can’t seem to get it all to work together without some other glitches rising up, especially with the way I’m making my vehicles work, so I’m writing my own vehicle control code. I need to write my own for air vehicle support anyway, but it’s looking like I’ll have to make one for ground based as well. No show-off-able work today, sorry. :frowning:

==============

Something to show today:
http://i.imgur.com/mh1fS.png

That, my friends, loads a truck into the scene at a given position, with a mass of 500. This is how vehicles can be added via modding. Simply create a new class that extends VinexVehicle and call super(modelLoc, materialLoc, position, mass). Optionally you can scale the model if it’s too big/small. I’m playing with physics now so hopefully I’ll have something to show video-wise by tonight. :slight_smile:

==============

With vehicles at a major stand still due to many problems so far, I’ve started rewriting AI code until I find inspiration to finish vehicles. After 3 days, I’ve got nav mesh generation for the main mesh complete and I’m messing with ways to make the AI navigate the buildings as well. After this I’ll just get the pathfinding code rewritten, then actually add in AI’s that navigate the map. I wish I had something to show as of yet but it’s going kind of slow lately.

=============

Another small update. Tomorrow I’m gonna do my absolute best to get AI working better, but as of right now they’re kinda broken.

+Added sprinting animation (not really animation, but it’s cool)
+Added reloading animation
+Basic AI

==============

+Added drivable vehicles
+Improved AI a bit
+Changed speed of rifle’s sprint animation, it’s a bit faster now
+Added sprint animation to other weapons
+Code for shotgun and better sniper exist (not quite finished)

I’ll finish the sniper rifle and post a video after school.

========================
(Yay, I can edit it now!)

Got navigation mesh generation working for buildings! It dynamically updates to compensate for damaged walls and floors. I’ve done lots of debugging and finally more or less have it the way I want it. Now I need to bug test the AI navigating it.
I’ll post a video soon! (Like later tonight!)
Red lines is the nav mesh that’s generated. I made the mesh flicker to show when it’s updating for ease of viewing.
[video]- YouTube

==================

I took a short break from working on AI to optimize buildings a bit. As of right now, I’m able to get about 8 FPS with a 1000 piece (tiny parts) building fractured to pieces, without removing any debris. (And considering at the time of testing it I have Blender, jMP, Steam, Origin, and Chrome with like 7 tabs, all opened up, that’s not too bad.) Keep in mind this is running on a PC that gets about 30 FPS on Minecraft at medium-high settings, so this is nothing to be basing solid final stats on. However, that type of computer is within my target audience so more optimization is needed. I want a large variety of hardware to be able to run this game.

Here’s me blowing stuff up:

[video]- YouTube
*Video won’t be live right away, should be up soon.

I don’t think I’ve mentioned this yet, but…

This is my first project! :smiley:

==================

Since the last update:
-Work is started on a new weapon system
-Re-wrote a LOT of the spawn-in and loading code. Fixed problems with starting, quitting, and starting another game without closing
+Added more optimizations to buildings. As of right now I get close to 20 FPS with full debris and plenty of destruction
+Fixed some problems with turning a vehicle (turn value was infinitely increasing, causing the wheels to spin).
+Re-wrote water movement system (it actually works now)

About the new weapon system:
For each weapon, there’s a set number of base parts, for example, the sniper has 6. For each base part type (whether it be top, ammo, handle, etc.) there are 4 different parts. Each part effects things like accuracy, rate of fire, weight, sprint speed, melee damage, melee speed, damage per bullet, ammo per clip, reload time, max extra ammo, and more.

All told, there’s over 1 million different sniper rifle combinations, 800,000 assault rifle combinations, and more than 4000 pistols, each applicable in some way to each player. This system won’t be entirely finished by the v0.6 release, but when it is I’ll release an update. (not v0.7, something like v0.6.5)


First finished model. (Base part of a sniper rifle, modifies accuracy and rate of fire).
I realize it sorta looks like a Desert Eagle. This was not intentional. I also realize the trigger is pink. This may or may not have been intentional. :slight_smile:

17 Likes

I like the destruction of the house! How is it done? Is it modelled in smalll pieces or is the destruction dynamic/proceduraly generated?

1 Like
@kwando said:
I like the destruction of the house! How is it done? Is it modelled in smalll pieces or is the destruction dynamic/proceduraly generated?


The destruction so far has been done by modelling the building in one piece, and fracturing the model using a fracture script. When the map is loaded, each fractured part has it's name read for special details, then adds a custom control called BuildingFractureControl. When there's enough force added to the part, it's given mass and a force is applied from the direction of the hit that pushed it over.

About the special details, I can name a part something like "Light_F_L_M10" in the 3D editor.
The _F denotes that a part is able to be fractured by bullets
the _L denotes that the part has a light attached to it
the _M denotes a custom mass. If this isn't specified, it defaults to 100.

Also, I have it set up to filter out 50% of debris created from explosions for performance's sake. You can turn it all the way up so none is removed, or you make it so as much as 75% is removed.
6 Likes

very awesome! got any details about how to learned to make this fracture script?

Actually, I found it online. It’s called VoronoiFracture or something like that. I haven’t taken the time to read through it’s code but it’s written in MaxScript. (I’m using a mix of 3DS Max and Wings3D to make the models for the game). That was only the second building I ever made for the building fracture system, which I just very recently finished.

I’m working on a map called “Athena Base” that makes use of the new destruction system’s full potential, including several buildings with lights and bullet fracturing windows. I plan to add a “grouping” type of thing to certain parts by adding a “_G1” or “_G2” to specify that it belongs to a group. If one of the parts in the group gets fractured, all of the rest disconnect as well (useful for windows and the likes).

1 Like

Yeah that fracture thingy was very cool.

I thought the motion blur was a bit too blurry but otherwise it’s looking really good. It shows you’ve put a lot of time into the game.

That building destruction is very impressive, nice work :slight_smile:

Thanks everyone!



@jmaasing I’ve been told that by a few people now so I’ll turn it down. Thanks for the criticism :slight_smile:



@zarch Thanks! It’s something I really wanted to look nice so I put a lot of thought into how it would work and didn’t stop changing and rewriting it until it came out how I wanted it to. It’s probably been the most time consuming feature so far.

Great stuff, added to the twitter queue :slight_smile:



About that destruction. I can’t really tell from the video if the fragments maintain their original texture or not, but it seems like they don’t. In any case, have you taken textures into account?

1 Like

Wow! That building destruction is amazing!

1 Like

That game is looking pretttyyy sexy haha… Can’t wait to see Athena Base, and then actually play the game!

Cool, this looks really nice :slight_smile: I’m a big Battlefield fan myself, reminds me a lot :wink:

2 Likes

@erlend_sh yes, they do maintain their textures. It’s just that the inner parts that you don’t see before the fracture don’t have texture coords so it gets a bit screwy.



@rangerplus10 YES! I changed it a looooooot since the last time you’ve seen it!



@nomnom thanks! And I hope to have it out very soon. I’m looking at probably another week or so of fixing and stuff before it’s ready!



@normen That’s exactly what I was going for! I want a mix of Battlefield and Halo, with some CoD in there too.



I’m about to start re-writing the vehicle code, will post a video when it’s done!

Just to put this out there, the game will be very easy to mod and add to. Anybody can make a map for it if they can model and texture. If you want details on stuff like that (adding more weapons, maps, etc. to the game) just ask and I’ll explain!

@vinexgames said:
Just to put this out there, the game will be very easy to mod and add to. Anybody can make a map for it if they can model and texture. If you want details on stuff like that (adding more weapons, maps, etc. to the game) just ask and I'll explain!


How?

First, model the map and all of the buildings. Make each building model a separate model. From whatever modelling program you used, export the model to a type that Blender can load. Use Blender 2.6 and enable the Fracture Tools add-on (File>User Preferences>Addons>Object>Fracture tools) and save as default. Choose each building and fracture it into the number of pieces you think is adequate for your building. (the one in the video has 300 parts, not including the rails). Make sure the names of your fractured objects aren’t too long or the OGRE exporter will trim it. If you modeled lights into the building, give them name like “Light1_F_L” to make sure they’re lit and can be shot out instead of by explosions only. Create a folder in the Maps folder in assets.jar, and make a seperate folder for each building (trust me, you’ll need to. It gets really messy.) Export each building as an Ogre .scene to it’s corresponding folder. Export the map model(s) itself/themselves into the base directory of the map folder you made.



http://www.youtube.com/watch?v=aXTcqpfWmSk



That's a video on the Blender fracture tools, it looked pretty dang useful.

After that, you have to decompile the game (unfortunately.. I plan to make it easier in the future) and find the package com.vinex.lexicon.mods and add a new class called mod_ModNameHere. Make it a subclass of Mod.class. In there, just add a new Level instance and instantiate it in the init(AssetManager am) method. For example:

[java]
Level myLevel = new Level("Maps/MyMap/MyMap.j3o", "Maps/MyMap/MyMap.j3m", am, hasWater, mapScale);
myLevel.addBuilding(new Building("Sniper Tower", assetManager.loadModel("Maps/MyMap/SniperTower/SniperTower.j3o"), assetManager.loadMaterial("Maps/MyMap/SniperTower/SniperTower.j3m"), <Some vec3 that is the position of your building in the world>, <a float to scale the building properly in case the map was modeled too big/small>));

modData.add(myLevel);
[/java]

Finally, add each thing to an array list in the super class, called "modData". The game loading code will run through each mod and run it's init method, then get all of the data from the modData array from the Mod.class file, and add them to the game's usable files.

^ That modding tutorial is for a less advanced, older version of the mod loader I made. I'll add a readme to the game's release that contains modding info. All you really need to know for now is, if you wanna make a map, the modelling and such can be done with whatever and however you want.
3 Likes

Awesome tut, thanks!

Bump for small update. :smiley: (video will be live soon)

@vinexgames said:
...
After that, you have to decompile the game (unfortunately.. I plan to make it easier in the future) and find the package com.vinex.lexicon.mods and add a new class called mod_ModNameHere. Make it a subclass of Mod.class. In there, just add a new Level instance and instantiate it in the init(AssetManager am) method.
...


You could also add a FileLocator etc. to the assetmanager which loads mod descriptions on a button click/startup/whatever.
1 Like

Do you use the fractured models all the time or do you replace the model on the first hit with a fractured model? Have you done any tests with textured buildings (any problems with gaps/flickering where slices are)?