Skip to content

Version 0.1.0 Alpha

Release Date: February 16, 2024
Status: Alpha Release
Build Number: 0.1.0


Overview

Welcome to the inaugural alpha release of MINE - Indoor Navigation Engine! This foundational release introduces the core rendering capabilities and map data processing pipeline, laying the groundwork for a powerful indoor navigation solution.

Alpha Release

This is an early alpha version intended for testing and feedback. The API is subject to change, and some features may have limitations. Not recommended for production use.


Highlights

  • 3D/2D Rendering


    Core environment generation engine supporting both 3D and 2D map visualization

  • JSON Configuration


    Flexible JSON-based map data parsing for easy map setup and configuration


New Features

3D/2D Environment Generation

The core rendering engine is now operational, providing the foundation for displaying indoor maps in both 3D and 2D perspectives.

Key Capabilities:

  • βœ… Real-time 3D scene rendering using Filament engine
  • βœ… 2D map projection for simplified navigation views
  • βœ… Dynamic viewport switching between 3D and 2D modes
  • βœ… Basic camera controls and positioning
  • βœ… Mesh loading and rendering pipeline

Technical Details:

  • Hardware-accelerated rendering
  • Support for glTF/GLB model formats
  • Basic lighting and material support
  • Camera perspective controls
  • Top-down orthographic projection
  • Simplified rendering for better performance
  • Ideal for wayfinding and route display
  • Reduced resource consumption

Usage Example:

val sceneView = MineSceneView(context)

// Enable 3D mode (default)
sceneView.setRenderMode(RenderMode.MODE_3D)

// Switch to 2D mode
sceneView.setRenderMode(RenderMode.MODE_2D)

JSON Map Data Parsing

Introduced a robust JSON parsing system for map configuration, enabling easy map setup and customization without code changes.

Supported Configuration:

  • πŸ“ Floor definitions and metadata
  • 🏒 Building structure information
  • πŸ—ΊοΈ Map model file references
  • βš™οΈ Initial camera positioning
  • 🎨 Basic styling options

JSON Structure:

{
  "id": "venue-001",
  "name": "Sample Venue",
  "version": "1.0.0",
  "modelPath": "models/venue.glb",
  "floors": [
    {
      "id": "ground",
      "name": "Ground Floor",
      "level": 0,
      "defaultFloor": true
    }
  ]
}

Loading Maps:

// Load from assets
val mapData = JsonUtil.LoadJsonFromAsset(context, "maps/venue.json")

// Apply to scene
sceneView.setMapData(mapData)

Bug Fixes

3D/2D Environment Generation

Issue: Initial rendering pipeline had stability issues causing crashes during scene initialization.

Resolution: - Improved resource initialization sequence - Added proper error handling for missing assets - Enhanced memory management during scene setup - Fixed race conditions in the rendering thread

Impact: Significantly improved stability during map loading and initialization.


JSON File Parsing - Empty File Handling

Issue: Parser would crash when encountering empty or malformed JSON files.

Resolution: - Added comprehensive input validation - Implemented graceful error handling for empty files - Added detailed error messages for debugging - Enhanced null-safety checks

Before:

// Would crash on empty file
val mapData = JsonUtil.LoadJsonFromAsset(context, "empty.json")

After:

// Now returns null safely with error logging
val mapData = JsonUtil.LoadJsonFromAsset(context, "empty.json")
if (mapData == null) {
    Log.e("Map", "Failed to load map data")
}


Known Issues

We're aware of the following limitations in this alpha release:

3D/2D Environment Generation on Low-End Devices

Performance Issue

Severity: Medium
Platforms: Low-end Android devices (< 2GB RAM)

Description: The rendering engine may experience frame drops or stuttering on devices with limited GPU capabilities.

Workaround:

// Reduce render quality for better performance
sceneView.displayConfig = DisplayConfig(
    renderQuality = DisplayConfig.RenderQuality.LOW,
    shadowsEnabled = false,
    antiAliasing = false
)

Status: Under investigation. Optimizations planned for v0.2.0.


Module Performance on Low-End Devices

Performance Issue

Severity: Medium
Platforms: Devices with < 3GB RAM

Description: Overall library performance may be suboptimal on resource-constrained devices, particularly during initial map loading.

Impact: - Slower map loading times (5-10 seconds) - Increased memory consumption - Potential out-of-memory errors on very low-end devices

Recommendations: - Test on target devices early in development - Implement loading screens for better UX - Consider 2D mode for better performance

Status: Performance profiling in progress. Optimizations scheduled for v0.2.0.


Gesture / Touch Event Handling

Interaction Issue

Severity: High
Platforms: All devices

Description: Touch gestures (pan, zoom, rotate) may not work consistently or may conflict with system gestures.

Known Problems: - Occasional unresponsive touch events - Pinch-to-zoom gesture sensitivity issues - Rotation gesture conflicts with pan - Multi-touch events not always recognized

Workaround:

// Disable conflicting gestures temporarily
gestureHandler.apply {
    isRotationEnabled = false  // Disable if conflicts occur
    minZoom = 1.0f
    maxZoom = 5.0f
}

Status: Critical fix planned for v0.2.0. Investigating touch event handling pipeline.


Testing Notes

Tested Configurations

Device Type Android Version Status Notes
High-end (Flagship) 11-14 βœ… Pass Optimal performance
Mid-range 10-13 ⚠️ Partial Some frame drops
Low-end 9-12 ❌ Issues Performance problems
Tablets 11-14 βœ… Pass Good experience

Test Coverage

  • βœ… Basic map loading
  • βœ… JSON parsing
  • βœ… 3D/2D mode switching
  • ⚠️ Touch gestures (limited)
  • ⚠️ Memory management (ongoing)
  • ❌ Multi-floor navigation (not implemented)

Installation

To use this alpha release, add the following dependency:

dependencies {
    implementation("com.machinestalk:indoornavigationengine:0.1.0-alpha")
}
dependencies {
    implementation 'com.machinestalk:indoornavigationengine:0.1.0-alpha'
}

Alpha Version

Remember to append the -alpha suffix to use this early release version.


Migration Guide

This is the first alpha release, so no migration is required. For new integrations:

  1. Add the dependency to your project
  2. Create a JSON map configuration file
  3. Initialize MineSceneView in your Activity/Fragment
  4. Load your map data using JsonUtil
  5. Refer to the Quick Start Guide for detailed setup

What's Next

Looking ahead to v0.2.0, we're planning:

  • 🎯 Improved touch gesture handling
  • ⚑ Performance optimizations for low-end devices
  • πŸ—ΊοΈ Multi-floor navigation support
  • πŸ“ Points of Interest (POI) system
  • 🎨 Enhanced theming capabilities
  • πŸ“± Better memory management

:material-feedback: Feedback & Support

Your feedback is crucial for improving MINE!


Additional Resources


License

This software is released under the commercial license. Please review the license terms before use.


Thank You!

Thank you for being an early adopter of MINE - Indoor Navigation Engine! Your feedback and testing help us build a better product. πŸ™